【发布时间】:2018-02-21 11:14:37
【问题描述】:
我正在使用父组件和子组件。子组件是单向数据绑定 ('<') 到一个通过 ng-repeat 传入父组件中的数组的值。
<li ng-repeat="item in $ctrl.items">
<child-component item="item"></child-component>
</li>
还有组件:
var childComponent = {
bindings: {
item: '<'
},
controller: 'ChildComponentController',
template: '<div>{{ $ctrl.item.name }}</div>'
}
也许我误解了 $onChanges 应该如何工作,但似乎更新父控制器的 items 数组中的项目应该在子控制器中调用 $onChanges()。它按预期更新视图。 $onChanges() 在初始页面加载时为每个项目触发,但不会为更改触发。
这是我用来更新父数组的代码:
function change() {
var item = angular.copy(this.items[1]);
item.name = 'baz';
angular.copy(item, this.items[1]);
}
完整版:https://plnkr.co/edit/x7WA08
我最终想要完成的是在子控制器上设置一个布尔值this.updated 以在视图中显示更新的指示器。为简单起见,plunk 只需执行 console.log()。
我找到了很多将更改从子级传递回父级的示例(这似乎更复杂,因为它与单向绑定的方向相反),但没有一个从父级更新子级带有 ng 重复。这似乎应该可以工作。
我在这里错过了什么?
更新
我忘了提及,我正在使用组件和$onUpdate,因为我正在尝试转向面向组件的架构和 Angular2 兼容性。我希望有一个适合这个目标的解决方案。
【问题讨论】:
标签: angularjs angularjs-ng-repeat angularjs-components