由于我们有相当大的 Angular 1.x 应用程序,我们无法将其完全升级到 Angular 2,但我喜欢新架构。版本 1.5 为旧的同一个应用程序带来了惊人的 component
s。作为所有很酷的东西,它缺少文档 ;-)
所以,这是一个问题。我在控制器的定义中有这两行:
this.$onInit = setType;
this.$onChanges = setType;
第一个正在工作,而第二个则没有。我正在使用 '<'
绑定。所以在第一次加载时,组件的状态是根据传递的值设置的,同时不会反映更改。我希望它能从 [1] 和 [2] 开始工作。
[1] https://docs.angularjs.org/guide/component
[2] https://angular.io/docs/js/latest/api/core/OnChanges-interface.html
UPD 好的,我了解到它不应该工作: https ://github.com/angular/angular.js/issues/14030
有人知道好的解决方法吗?
UPD2 从 1.5.3 开始工作
原文由 leitasat 发布,翻译遵循 CC BY-SA 4.0 许可协议
从 AngularJs 1.5.3 开始,假设 ctrl.someModel 在子组件中被单向绑定,以下不会触发 $onChanges。
似乎更新对象的属性不会被识别为更新。
这就是我目前解决它的方式。我不认为这是最好的解决方案,但它会触发 $onChanges。我创建了初始模型的深层副本,将数据添加为其属性之一,然后将初始模型设置为新对象的值。本质上,我更新了整个对象,它由生命周期挂钩获取:
在子组件中(假设模型被绑定为“数据”):