移除或重构Ember观察者操纵属性

时间:2016-11-21 00:07:38

标签: javascript ember.js ember-data

目前,在整个应用程序中都有大量的观察者,在观看了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的原则。

任何人都可以启发我,因为我需要在这种情况下解决问题,特别是使用观察者来操纵另一个属性的情况,而这个属性反过来又被观察到一个不同的组件(它是一团糟。 ..)。

0 个答案:

没有答案