Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何使隔离作用域与父作用域变量保持同步?_Angularjs - Fatal编程技术网

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重复作用域的值都相同

  • 这里描述了这一概念:
  • 这里回答了一个类似的问题:

如何为指令生成监视语句以监视该“值”?似乎是作用域。$watch('valueObject.value',…)不起作用。我想这样做,当这个值改变时,所有的指令都会“得到它”并做一些事情。也许你可以做一个plunker来进一步阐述你的问题?有一些Angular JS模板可以轻松创建运行示例。
MyController
- $scope.valueObject = { value: 5 }
then increment valueObject.value by "1"