0
在Ember的最新版本(1.10+)中,似乎有使用組件而不是控制器和視圖的趨勢。何時使用控制器在使用Ember組件時使用組件
The wisdom seems to be: 「在頂級只使用控制器,用於從路由接收數據,並使用Ember.Controller代替Ember.ArrayController或Ember.ObjectController」
這使得一些有意義的我,因爲它是很酷來創建可重用的組件,但是有些情況下我不清楚適當的方法是什麼。
說我們有代表在一個表中的行組件,這樣的事情:
# entry-row.js component
import Ember from 'ember';
export default Ember.Component.extend({
tagName: 'tr',
actions: {
toggleResolving: function() {
this.toggleProperty('resolving');
}
},
isChecked: function() {
return this.get('resolving');
}.property('resolving')
});
# entry-row.hbs template
<td {{action "toggleResolving"}}>{{entry.name}}</td>
<td>{{entry.currency.symbol}}{{entry.amount}}</td>
<td>{{entry.date}}</td>
<td class="bs-checkbox">{{input type="checkbox" checked=isChecked class="toggle"}}</td>
以形成臺,許多相同的組件被使用。那很棒。如果存在一些僅適用於該行的非持久狀態,那麼它可以屬於該組件並在那裏進行更改。例如:
actions: {
toggleResolving: function() {
this.toggleProperty('resolving');
}
}
但是說我的resolving
屬性也是有用的組件外。在這種情況下,我希望能夠標記多行進行解析,然後對它們進行一些操作。我相信在切換到組件之前,我會在Controller上定義resolving
屬性,並在需要model +狀態的地方使用該控制器。
我還應該把它放在控制器上嗎?
有另一個組件包裝所有行來管理行外的狀態。 – blessenm
@blessenm這也是我最初的想法,但是說我想在我的應用程序中完全斷開某些東西,從而利用它。例如,某個地方的某個狀態框(可能是一個組件本身)會列出當前標記爲解析的行。 – dpwrussell
可能使用事件總線有助於單獨組件之間的通信。 http://www.thesoftwaresimpleton.com/blog/2015/04/27/event-bus/您也可以使用服務並將它們注入到組件中。 – blessenm