當用戶單擊模型時,設置isActive:true
並設置所有其他模型isActive:false
。Emberjs試圖創建「單選按鈕」類型功能
我有兩個組件和嘗試實現此目的所涉及的路線。
從頂部開始我有一個distro-item
這是一個單一模型項目
//components/distro-item
export default Component.extend({
classNames: 'column is-2',
tagName: 'div',
isActive: false,
actions: {
toggleActive (distro) {
this.sendAction('toggleActive', distro);
}
}
});
然後我有它包含所有的distro-item
小號
// 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);
}
}
});
最後的路線保持器組件
//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);
},
}
});
我不確定這三件事中的哪一件應該是負責過程的每個部分。最初的想法是,發行人應該負責確定每個發行版應該處於哪個狀態,並將其發送迴路線。然而,無論我嘗試什麼,我都無法獲得計算屬性來觸發。這應該在路線上還是其他地方?
documentation example似乎具有相當於發行人的權利。當我改變isActive
的狀態它不會像我所期望的那樣發生...
任何幫助表示讚賞!
您可以將此'selectedDistro'屬性和toggleActive操作移動到控制器並將'distros'數組傳遞到組件。 – maheshiv