84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
(1)controller中定義了兩個變數
$scope.a="aaaaa"; $scope.b="bbbbb";
(2)同時定義一個物件用來保存
$scope.object={ arr:[$scope.a,$scope.b] }
(3)現在動態修改$scope.a 、$scope.b的值。 但是$scope.object.arr中的值沒有變,這是為啥呢?不是應該是即時更新的麼?
$scope.a
$scope.b
$scope.object.arr
因為a和b都是原始数据类型,在声明object的时候,向arr里填入的就是a和b對應的字串本身
a
b
object
arr
所以當你後面再去修改$scope.a和$scope.b时,$scope.object並沒跟著一起變。
$scope.object
這就好比,我有兩個蘋果,給了你一個,然後我把我自己的咬了一口,因為蘋果長得一模一樣(假設,是偽命題),於是我期待你手裡的蘋果也出現了一個被咬的豁口。
你可以使用 $watch
$scope.$watch('a',function(v){ $scope.object.arr }); $scope.$watch('b',function(v){ $scope.object.arr[1] = v; });
預設是淺遍歷
$scope.a,$scope.b為字串,賦值相當於直接賦值字串給陣列。 如果想達到你的目的,可以監聽一下a,b,當a,b發生變化時,再給object賦值。
因為
a
和b
都是原始数据类型,在声明object
的时候,向arr
里填入的就是a
和b
對應的字串本身所以當你後面再去修改
$scope.a
和$scope.b
时,$scope.object
並沒跟著一起變。這就好比,我有兩個蘋果,給了你一個,然後我把我自己的咬了一口,因為蘋果長得一模一樣(假設,是偽命題),於是我期待你手裡的蘋果也出現了一個被咬的豁口。
你可以使用 $watch
預設是淺遍歷
$scope.a,$scope.b為字串,賦值相當於直接賦值字串給陣列。
如果想達到你的目的,可以監聽一下a,b,當a,b發生變化時,再給object賦值。