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', []);
}
});
這是一個燼子的方式來完成這項工作嗎?我是否需要爲此目的重新考慮我的應用程序結構或數據結構? –
這是軟件應該如何工作的。這是軟件中的常見模式。您也可以使用服務作爲活動巴士。併發送事件從表到總線和任何行聽總線 –
謝謝。活動巴士似乎對我很有幫助。 –