通过带控制器的作用域树进行角度数据传播

时间:2014-05-21 00:16:10

标签: javascript angularjs angularjs-directive angularjs-scope propagation

我正在学习Angular,并且遇到了一些问题。我正在尝试创建一组表示javascript对象中不同级别的指令。该对象包含许多不同的属性,这些属性取决于模型其他部分的状态。例如,如果其中一个子属性处于错误状态,则父属也是。我有一个非常简化的例子HERE。任何帮助将不胜感激。特别是如果有人可以解释这个例子出了什么问题,并提供有关角度设计的高级最佳实践的建议。感谢。

1 个答案:

答案 0 :(得分:1)

您的示例的问题与ng-repeat创建的新范围有关。我会给你here一个非常详细的解释,但这里有一点:

  

对于每个项目/迭代,ng-repeat创建一个新范围,原型继承自父范围,但它还将项目的值分配给新子项的新属性   范围

     

如果item是基元,则基本上将值的副本分配给新的子范围属性。更改子范围属性的值(即使用ng-model)更改父范围引用的数组。

使用简单的解决方案是一个令人困惑的问题:使您的可绑定值对象而不是基元。

在您的示例中,替换

scope.innerValues = [1,2,3];

scope.innerValues = [{value: 1}, {value:2}, {value:3}];

以下是您修改后的示例:http://plnkr.co/edit/IXKk75721MHNsI0zeBEG?p=preview