Javascript 当同一模板的两个实例在应用程序中的多个位置使用时,会出现异常行为
请看看这个。我对Javascript 当同一模板的两个实例在应用程序中的多个位置使用时,会出现异常行为,javascript,ember.js,Javascript,Ember.js,请看看这个。我对索引模板中的渲染和颜色路由的renderTemplate函数中的手动渲染都使用了相同的模板。单击More Colors链接不会呈现我在ColorsRoutemodel挂钩中返回的颜色列表。现在,如果您像我所做的那样,将render'colors list模型更改为render colors-list2模型,一切都会按照我的预期工作。两者之间的唯一区别在于,在JSBin1中,我只使用颜色列表模板,但在第二个工作示例中,我有一个用于渲染的模板和一个用于颜色路由的相同、不同名称的模板
索引
模板中的渲染
和颜色路由
的renderTemplate
函数中的手动渲染都使用了相同的模板。单击More Colors
链接不会呈现我在ColorsRoute
model挂钩中返回的颜色列表。现在,如果您像我所做的那样,将render'colors list模型
更改为render colors-list2模型
,一切都会按照我的预期工作。两者之间的唯一区别在于,在JSBin1中,我只使用颜色列表
模板,但在第二个工作示例中,我有一个用于渲染
的模板和一个用于颜色路由
的相同、不同名称的模板
这个代码示例虽然在JSBin中微不足道,但它是我在一个更大的应用程序中所做的事情的精确提取。这个应用程序有一组小部件,我用同一模板中的多个命名出口来表示。我手动渲染到这些输出中,就像我在ColorsRoute
renderTemplate
钩子中的JSBin中所做的那样。我进行手动渲染,以便当某些事件发生时,我在路由上定义了操作
,这将允许我在对REST API进行ajax调用后动态替换出口
的内容
这种行为的解释是什么?它更多地与正在创建的控制器相关,而不是与模板相关。从技术上讲,我认为这两种方法都不适用,但如果不定义一个控制器,并且还没有创建该类型的控制器,那么可以创建它,并使用当前控制器/模型作为支持它的模型
实际上,如果希望在使用render时使用该控制器作为备份控制器,则应该在使用render时提供该控制器
renderTemplate: function(controller, model){
this.render();
this.render('color-list', {
outlet: "named",
into: 'colors',
controller: controller
});
}