(1)controller中定義了兩個變數
$scope.a="aaaaa";
$scope.b="bbbbb";
(2)同時定義一個物件用來保存
$scope.object={
arr:[$scope.a,$scope.b]
}
(3)現在動態修改$scope.a
、$scope.b
的值。
但是$scope.object.arr
中的值沒有變,這是為啥呢?不是應該是即時更新的麼?
淡淡烟草味2017-05-15 17:07:33
因為a
和b
都是原始数据类型,在声明object
的时候,向arr
里填入的就是a
和b
對應的字串本身
所以當你後面再去修改$scope.a
和$scope.b
时,$scope.object
並沒跟著一起變。
這就好比,我有兩個蘋果,給了你一個,然後我把我自己的咬了一口,因為蘋果長得一模一樣(假設,是偽命題),於是我期待你手裡的蘋果也出現了一個被咬的豁口。
曾经蜡笔没有小新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;
});
滿天的星座2017-05-15 17:07:33
$scope.a,$scope.b為字串,賦值相當於直接賦值字串給陣列。
如果想達到你的目的,可以監聽一下a,b,當a,b發生變化時,再給object賦值。