有沒有一種方法,當你渲染幾次來看,有他們每個控制器的一個實例相關聯?如何管理具有獨立渠道的意見集合?
很確定這不是正確的做法,所以我很樂意接受我應該怎麼做。但這裏是用例:
我有這些路線:
FormBuilder.Router = Ember.Router.extend({
// ...
form: Ember.Route.extend({
route: '/form/:form_id/edit',
connectOutlets: function (router, form) {
router.get('applicationController').connectOutlet('editForm', form);
router.get('editFormController').connectOutlet('fieldsList', form.get('fields'));
},
editField: Ember.Route.transitionTo('editOneField'),
showField: Ember.Route.transitionTo('showOneField'),
initialState: 'showOneField',
editOneField: Ember.Route.extend({
connectOutlets: function (router, field) {
router.get('fieldsListController').connectOutlet('editField', field);
}
}),
showOneField: Ember.Route.extend({
connectOutlets: function (router, field) {
router.get('fieldsListController').connectOutlet('showField', field);
}
})
})
});
我想列出Field
S IN一Form
在form
路線。該Route
這是:
form: Ember.Route.extend({
route: '/form/:form_id/edit',
connectOutlets: function (router, form) {
router.get('applicationController').connectOutlet('editForm', form);
router.get('editFormController').connectOutlet('fieldsList', form.get('fields'));
},
EditFormView
渲染模板edit_form_view
:
<h2>Editing form {{id}}</h2>
{{view FormBuilder.AddFormFieldsView}}
{{ outlet }}
在我們的outlet
連接到fieldsList
。這呈現fields_list
模板,並連接到FieldsListController
控制器,該控制器是一個數組Field
。
{{! fields_list.handlebards }}
<p>The form fields</p>
<ul>
{{#each content}}
{{view FormBuilder.FieldView}}
{{/each}}
</ul>
因此,這使得它使用field_view
模板視圖FieldView
:
# {{publicName}}
{{outlet}}
而這正是我有一個問題。我無法真正「連接」這個outlet
,因爲它是fieldsListController
的一部分。
我將描述我嘗試做的事情。我在我的控制器中有這個。
editField: Ember.Route.transitionTo('editOneField'),
showField: Ember.Route.transitionTo('showOneField'),
initialState: 'showOneField',
editOneField: Ember.Route.extend({
connectOutlets: function (router, field) {
router.get('fieldsListController').connectOutlet('editField', field);
}
}),
showOneField: Ember.Route.extend({
connectOutlets: function (router, field) {
router.get('fieldsListController').connectOutlet('showField', field);
}
})
這意味着,渲染視圖,在field_view.handlebars
的outlet
將與showField
連接:
<pre>show a field yo :)</pre>
<a {{action editField this}}>(edit)</a>
如果我只有一個字段,並單擊(edit)
,就會切換連接outlet
與editField
,這是迄今爲止我想要做的。但是,如果我的Form
中有多個Field
,當我按(edit)
時,它將所有outlet
s連接到editField
。
它使因爲這router.get('fieldsListController').connectOutlet('showField', field);
的感覺,但我不知道如何獲得一個控制器的正確實例(和/或每個FieldView
S的創建一個控制器的一個實例。
我我正在嘗試在不改變整個視圖的情況下進行「內聯版」,它似乎不是一個好的文檔/教程,關於擁有獨立的視圖集合outlet
...
指向整個代碼庫和在線實時版本的鏈接位於頁面頂部。