У меня есть компонент таблицы, который содержит несколько компонентов ряда. Каждый компонент строки имеет свойство isSelected
.Как установить внутреннее состояние компонента Ember из родительского компонента?
Время от времени я хотел бы сбросить все компоненты строки isSelected
внутри до false
от компонента стола clear
действие (кнопка).
Как я могу реализовать эту функцию? Передача данных вниз - единственный способ изменить внутреннее состояние компонента?
Ряд компонентов
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', []);
}
});
Является ли это обычным способом выполнять работу? Нужно ли мне передумать мое приложение strcuture или структуру данных для этой цели? –
Вот как должно работать программное обеспечение. Это обычная модель программного обеспечения. Также вы можете использовать службу как шину событий. И отправьте событие из таблицы в шину, и любые строки послушают это событие с шины –
Спасибо. Событийный автобус кажется мне многообещающим. –