ユーザーがモデルをクリックすると、isActive:true
と設定し、その他のモデルはすべてisActive:false
に設定します。"ラジオボタン"タイプの機能を作成しようとするEmberjs
私は2つのコンポーネントと、これを達成しようとするルートを持っています。私は最終的にルート
全てdistro-item
S
// components/distro-holder
export default Ember.Component.extend({
sortedDistros: Ember.computed.sort('distros', 'sortDefinition'),
sortDefinition: ['sortOrder:acs'],
distros: computed('[email protected]', function() {
console.log("triggered");
}),
actions: {
toggleActive(distro) {
this.sendAction('toggleActive', distro);
}
}
});
を保持するホルダー成分を有する単一のモデル項目
//components/distro-item
export default Component.extend({
classNames: 'column is-2',
tagName: 'div',
isActive: false,
actions: {
toggleActive (distro) {
this.sendAction('toggleActive', distro);
}
}
});
あるdistro-item
を有する上部から開始
//route/new
export default Route.extend(AuthenticatedRouteMixin, {
selectedDistro: undefined,
model() {
return RSVP.hash({
distros: get(this, 'store').findAll('distro'),
});
},
setupController(controller, models) {
controller.setProperties(models);
},
actions: {
toggleActive(distro) {
this.set('selectedDistro', distro);
},
}
});
私は3つのもののどれがプロセスの各部分を担当します。最初の考えは、各ディストリビューションがどの州にあるべきかを把握し、それをルートに戻すことをディストリビューターが担うべきであるということです。しかし、私が何を試しても、計算されたプロパティをトリガーすることはできません。これはルート上にあるべきか、それとも他の場所にあるべきですか?
documentation exampleはディストリビューターに相当します。 isActive
の状態を変更すると、それは私の期待どおりに発火しません。
何か助けていただければ幸いです。
この 'selectedDistro'プロパティとtoggleActiveアクションをコントローラに移し、' distros'配列をコンポーネントに渡すことができます。 – maheshiv