我正在尝试在 #each 帮助器的上下文中使用 Ember.ContainerView 的 currentView 功能,但是当 currentView 属性更改为另一个视图时它会失败。
我的目标是通过在用户单击链接时将常规视图更改为编辑视图来允许编辑列表项。
主模板:
<ul>
{{#each itemController="person"}}
<li>{{view Ember.ContainerView currentViewBinding="cv"}}</li>
{{/each}}
</ul>
用于显示人员的模板“姓名”:
{{firstName}} {{lastName}} <a {{action edit}}>edit</a>
currentViewBinding 属性 ('cv') 的控制器和编辑操作的处理。
App.PersonController = Ember.ObjectController.extend({
cv: Ember.View.extend({
templateName: 'name'
}),
edit: function() {
this.set('cv', Ember.View.extend({
templateName: 'nameEdit'
}));
}
})
'nameEdit' 模板对应于需要显示以编辑人员对象的视图。
{{input type='text' value=firstName}} {{input type='text' value=lastName}}
api指南说:
当 currentView 属性设置为视图实例时,它将被添加到 ContainerView。如果稍后将 currentView 属性更改为不同的视图,则新视图将替换旧视图。
但是,如果我用视图实例替换 cv 属性(通过使用 create() 而不是 extend())会更糟,因为重新渲染错误是 yield。看到我的这个问题。
这是与http://jsfiddle.net/fblanvil/tD3Ph/3/一起玩的 jsFiddle