目前,在整个应用程序中都有大量的观察者,在观看了Stefan Penner对观察者的讲话后,我一直试图将观察者重构为计算属性或使用组件生命周期钩子,但不是真的很成功(试着记住Data Down Actions Up原则)。
但是,如何将一个组件的观察者分解出来,例如,对一个数组(赋予组件的属性)进行操作,并在另一个属性发生变化时对其进行操作。
例如:
// controller.hbs
{{component items=items object=object}}
// component.js
Ember.Component.extend({
itemsObserver: function () {
// some logic here that either adds or removes items from
// for example object.selectedItems (an array) depending on
// 'items'
}.observes('items.[]')
})
我无法使用' didReceiveAttrs'因为在操作数组时它不起作用(这是我想要观察的)。当我不需要新属性时,我不知道如何使用计算属性,我只需要操作给定对象上的数组(属性为组件)。但话说回来,我觉得这完全违背了DDAU的原则。
任何人都可以启发我,因为我需要在这种情况下解决问题,特别是使用观察者来操纵另一个属性的情况,而这个属性反过来又被观察到一个不同的组件(它是一团糟。 ..)。