我是ember.js的新手,我发现其中一件很难理解的事情是父组件和子组件之间的数据和事件的双向通信。
我设法解决了一个更简单的问题,即维护一个项目列表,跟踪哪一个是活动的,以及从父组件中更改活动子项。该模式在this jsbin中总结。
我想知道,这是解决问题的最佳方法吗?尽管ember是“高度自以为是”,但我发现有很多不同的方法来实现同样的事情,所以只是寻求一些保证或重定向。
答案 0 :(得分:1)
最佳做法可归纳为“数据向下”,“向上行动”。您希望尽可能将数据传递给组件并将操作传递给父组件,以将子组件与父组件隔离,以便可以在任何位置使用它。避免通过双向绑定发送数据,因为它不再是Ember 2.0中的默认值。 (默认情况下,绑定将是一种方式。)
我要做的jsbin的主要更改是在模板中发送parentCtrl = this,我会发送itemSelected = itemSelected。然后在您的项目组件中:
isActive: Ember.computed('itemSelected', function() {
if (this.get('itemSelected') !== null) {
return this.get('itemSelected.description');
} else {
return false;
}
}),