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
    });
  }