有没有办法,当你多次渲染一个视图时,让它们中的每一个都与一个控制器的实例相关联?
很确定这不是正确的做法,所以我愿意接受有关我应该如何做的迹象。但这里是用例:
我有这些路线:
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);
}
})
})
});
我正在尝试在路线中列出 a中的Fields 。为此:FormformRoute
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>
所以这会渲染FieldView使用field_view模板的视图:
# {{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);
}
})
这意味着在渲染视图时,outletinfield_view.handlebars将与showField:
<pre>show a field yo :)</pre>
<a {{action editField this}}>(edit)</a>
如果我只有一个字段,然后单击(edit),它将切换连接outletwith editField,这是我目前正在尝试做的。Field但是,如果my中有超过 1 个Form,当我按下 时(edit),它会将所有outlets 连接到editField。
因此这是有道理的router.get('fieldsListController').connectOutlet('showField', field);,但我不知道如何获取正确的控制器实例(和/或为每个FieldViews.
我在这里很迷茫。我正在尝试在不改变整个视图的情况下进行“内联编辑”,而且它似乎不是关于拥有一组视图的好文档/教程,每个视图都有一个独立的outlet......
整个代码库和在线实时版本的链接位于页面顶部。