诚然,我对渲染到命名插座不是很熟悉,但它似乎不会渲染到尚未渲染的插座。话虽如此,您可以允许产品模板正常渲染(不要覆盖 renderTemplate),然后将编辑表单延迟渲染到产品模板中(参见第二个 jsbin),而不是从 renderTemplate 执行它是可能的。这有点尴尬,所以如果你想为了它而劫持renderTemplate,请参阅this first jsbin。它们都涉及等待产品模板呈现,然后呈现它。
而且我相信如果你覆盖 renderTemplate 钩子,它会跳过默认渲染,因此永远不会渲染产品模板。经过进一步调查,这是真的,如果你超级它,它也可以。顺便说一句,this._super() 表示也运行此方法的默认实现。
http://jsbin.com/ujiKire/5/edit
使用设置控制器:
http://jsbin.com/OvONejo/1/edit
setupController: function(controller, model){
var templateEditForm = model.get('editform');
var templateInto = 'product';
var templateOutlet = 'editform';
console.log("render the [%s] form into the [%s] template, using the [%s] outlet",templateEditForm, templateInto, templateOutlet);
// Why does this code not work
var self = this;
Ember.run.later(function(){
self.render(templateEditForm, { // the template to render
into: 'product', // the template to render into
outlet: templateOutlet, // the name of the outlet in that template
controller: controller // the controller to use for the template
});
},1);
}