Angularjs 如何使隔离作用域与父作用域变量保持同步?
我有一个控制器:Angularjs 如何使隔离作用域与父作用域变量保持同步?,angularjs,Angularjs,我有一个控制器: MyController - $scope.value = 5 - $scope.list = [ {item: Apple, cost: 5}, {item: Bannana, cost: 2} ] 在my index.html中,我有一个ng重复: <div ng-controller="MyController"> <mydirective ng-repeat="item in list" val
MyController
- $scope.value = 5
- $scope.list = [
{item: Apple, cost: 5},
{item: Bannana, cost: 2}
]
在my index.html中,我有一个ng重复:
<div ng-controller="MyController">
<mydirective ng-repeat="item in list" value="value"></mydirective>
</div>
在指令的链接函数中,我绑定到一个事件:
- Onclick, increment scope.value by "1"
问题在于,尽管有“=”,但ng repeat生成的2条指令中的每一条都只是实际MyController“value”变量的“副本”。如何使它们链接在一起,以便在单击时,myController的$scope.value得到更新,并且所有指令“scope.value”都与之匹配?或者这是不可能的
我希望能够从所有指令中监视MyController的$scope.value,以便每个指令都可以基于“value”执行某些操作。我想您遇到了范围继承基元类型的问题。 请尝试改用对象:
MyController
- $scope.valueObject = { value: 5 }
then increment valueObject.value by "1"
ng repeat的每个作用域都继承自控制器作用域。
如果继承“值”之类的基元类型,则在子范围中更改它只会影响该子级,因为它会遮挡父级。
如果改为继承一个对象,则更改该值将影响继承的对象=所有ng重复作用域的值都相同
- 这里描述了这一概念:
- 这里回答了一个类似的问题:
MyController
- $scope.valueObject = { value: 5 }
then increment valueObject.value by "1"