如何使隔离范围与父范围变量保持同步?

时间:2014-03-23 20:06:41

标签: angularjs

我有一个控制器:

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”执行某些操作。

1 个答案:

答案 0 :(得分:1)

我认为你遇到了范围继承原始类型的问题。 请尝试使用对象:

MyController
- $scope.valueObject = { value: 5 }
then increment valueObject.value by "1"

ng-repeat的每个范围都继承自控制器范围。 如果继承了类似&#34; value&#34;的原始类型,那么在子范围中更改它只会影响该子项,因为它会影响父项。 如果您继承了一个对象,那么更改该值会影响继承的对象=所有ng-repeat范围的值都是相同的。