84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
(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赋值。