首頁  >  問答  >  主體

angular.js - angularJs 的$範圍

(1)controller中定義了兩個變數

$scope.a="aaaaa";
$scope.b="bbbbb";

(2)同時定義一個物件用來保存

$scope.object={
    arr:[$scope.a,$scope.b]
}

(3)現在動態修改$scope.a$scope.b的值。
但是$scope.object.arr中的值沒有變,這是為啥呢?不是應該是即時更新的麼?

phpcn_u1582phpcn_u15822738 天前556

全部回覆(4)我來回復

  • 淡淡烟草味

    淡淡烟草味2017-05-15 17:07:33

    因為ab都是原始数据类型,在声明object的时候,向arr里填入的就是ab對應的字串本身

    所以當你後面再去修改$scope.a$scope.b时,$scope.object並沒跟著一起變。

    這就好比,我有兩個蘋果,給了你一個,然後我把我自己的咬了一口,因為蘋果長得一模一樣(假設,是偽命題),於是我期待你手裡的蘋果也出現了一個被咬的豁口。

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 17:07:33

    你可以使用 $watch

    $scope.$watch('a',function(v){
        $scope.object.arr
    });
    $scope.$watch('b',function(v){
        $scope.object.arr[1] = v;
    });

    回覆
    0
  • 阿神

    阿神2017-05-15 17:07:33

    預設是淺遍歷

    回覆
    0
  • 滿天的星座

    滿天的星座2017-05-15 17:07:33

    $scope.a,$scope.b為字串,賦值相當於直接賦值字串給陣列。
    如果想達到你的目的,可以監聽一下a,b,當a,b發生變化時,再給object賦值。

    回覆
    0
  • 取消回覆