(1)controller中定义了两个变量
$scope.a="aaaaa";
$scope.b="bbbbb";
(2)同时定义一个对象用来保存
$scope.object={
arr:[$scope.a,$scope.b]
}
(3)现在动态修改$scope.a
、$scope.b
的值。
但是$scope.object.arr
中的值没有变,这是为啥呢?不是应该是实时更新的么?
(1)controller中定义了两个变量
$scope.a="aaaaa";
$scope.b="bbbbb";
(2)同时定义一个对象用来保存
$scope.object={
arr:[$scope.a,$scope.b]
}
(3)现在动态修改$scope.a
、$scope.b
的值。
但是$scope.object.arr
中的值没有变,这是为啥呢?不是应该是实时更新的么?
你可以使用 $watch
$scope.$watch('a',function(v){
$scope.object.arr
});
$scope.$watch('b',function(v){
$scope.object.arr[1] = v;
});
因为
a
和b
都是原始数据类型,在声明object
的时候,向arr
里填入的就是a
和b
对应的字符串本身所以当你后面再去修改
$scope.a
和$scope.b
时,$scope.object
并没跟着一起变。这就好比,我有两个苹果,给了你一个,然后我把我自己的咬了一口,因为苹果长得一模一样(假设,是伪命题),于是我期待你手里的苹果也出现了一个被咬的豁口。