0
私は、いくつかの行コンポーネントを継承するテーブルコンポーネントを持っています。各行コンポーネントには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またはデータ構造について再考する必要がありますか? –
これは、ソフトウェアがどのように動作するかを示しています。これはソフトウェアの一般的なパターンです。また、サービスをイベントバスとして使用することもできます。そして、テーブルからバスにイベントを送り、行はバスからそのイベントを聞きます。 –
ありがとう。イベントバスは私にとって有望だと思われる。 –