2015-05-15 81 views
0

灰燼數據存儲的變化我有一個特定的模式這樣造成記錄組件:遵守組件

export default Ember.Component.extend({ 

    store: Ember.inject.service(), 

    addRecord(account) { 
     this.get('store').createRecord('update', { 
     authUid: account.get('authUid'), 
     service: account.get('platform') 
     }); 
    } 
}); 

我有一個需要觀察做一個特定的模式變化的另一個組件(即,如果記錄添加或刪除),並在該組件中顯示它們。

export default Ember.Component.extend({ 
    store: Ember.inject.service(), 

    observeStoreChanges: /*What should I write so that every time `addRecord` 
pushes record in the store, a function is executed in this component*/ 

}); 
+0

這些組件嵌套?兄弟姐妹?一種方法是使用事件總線。 http://www.thesoftwaresimpleton.com/blog/2015/04/27/event-bus/ – blessenm

+0

@blessenm是的,我最終想出了一個解決方案,使用您提供的鏈接中提到的事件總線。不過,我只是想知道是否有不同的方式。 –

+0

那它真的取決於組件。再次嵌套或兄弟,如果它的嵌套你使用動作 – blessenm

回答

0

如果你是觀察者模式的粉絲:

// store.js 
export default DS.Store.extend(Ember.Evented, { 
    createRecord() { 
     const record = this._super.apply(this, arguments); 
     this.trigger('recordCreated', record); 
     return record; 
    } 
}); 

// component.js 
export default Ember.Component.extend({ 
    observesStoreChanges: function(record) { 

    }.on('store.recordCreated') 
});