0
我有一个表格组件,它连续多行组件。每一行组件都有一个isSelected
属性。如何从父组件设置Ember组件的内部状态?
曾经有一段时间我想从表的组件clear
行动(一个按钮)重置所有行组件里面到false
。
如何实现此功能?是否通过数据减少是改变组件内部状态的唯一方法?
行组件
export default Ember.Component.extend({
tagName: 'tr',
isSelected: false,
classNameBindings: ['isSelected:selected'],
click() {
const data = this.get('data');
const selectedState = this.get('isSelected');
this._toggleSelected();
if (selectedState) {
this.sendAction('rowClicked', {data: data, operator: 'remove'});
} else {
this.sendAction('rowClicked', {data: data, operator: 'add'});
}
},
_toggleSelected() {
this.toggleProperty('isSelected');
}
});
表可选构件
export default Ember.Component.extend({
selectedRows: [],
classNames: ['table-selectable'],
actions: {
rowClicked(row) {
this._addToSelectedRows(row);
},
cleanSelectedRows() {
this._cleanSelectedRows();
}
},
_addToSelectedRows(row) {
console.log(row);
this.get('selectedRows').addObject(row);
},
_cleanSelectedRows() {
this.set('selectedRows', []);
}
});
这是一个烬子的方式来完成这项工作吗?我是否需要为此目的重新考虑我的应用程序结构或数据结构? –
这是软件应该如何工作的。这是软件中的常见模式。您也可以使用服务作为活动巴士。并发送事件从表到总线和任何行听总线 –
谢谢。活动巴士似乎对我很有帮助。 –