我有一个控制器:
MyController
- $scope.value = 5
- $scope.list = [
{item: Apple, cost: 5},
{item: Bannana, cost: 2}
]
在我的index.html中,我有一个ng-repeat on:
<div ng-controller="MyController">
<mydirective ng-repeat="item in list" value="value"></mydirective>
</div>
在我的指令中,我有一个隔离范围:
{
value:"="
}
在指令的链接功能中,我绑定了一个事件:
- Onclick, increment scope.value by "1"
问题是看起来尽管有“=”,但是从ng-repeat生成的2个指令中的每一个仅仅是实际MyController“value”变量的“副本”。我如何将它们链接在一起以便当我单击时,myController的$ scope.value会更新并且所有指令“scope.value”都会匹配它?或者这不可能吗?
我希望能够从所有指令中查看MyController的$ scope.value,以便每个指令都可以根据“value”执行某些操作。
答案 0 :(得分:1)
我认为你遇到了范围继承原始类型的问题。 请尝试使用对象:
MyController
- $scope.valueObject = { value: 5 }
then increment valueObject.value by "1"
ng-repeat的每个范围都继承自控制器范围。 如果继承了类似&#34; value&#34;的原始类型,那么在子范围中更改它只会影响该子项,因为它会影响父项。 如果您继承了一个对象,那么更改该值会影响继承的对象=所有ng-repeat范围的值都是相同的。