Ember.js 如何在把手模板中渲染同一视图的多个实例

Ember.js 如何在把手模板中渲染同一视图的多个实例,ember.js,handlebars.js,Ember.js,Handlebars.js,我正在尝试在单个把手模板中呈现containerView的多个实例 {{view“App.MyContainerView”} 只要不添加引用同一视图的附加{{view}}标记,上述代码就可以正常工作。我不明白为什么。。。我附上了一把完整的小提琴来演示这个问题。(检查控制台以查看抛出的错误) 抛出的错误是“您所做的某些事情导致视图在渲染后但在插入DOM之前重新渲染” 如有任何帮助/澄清,将不胜感激 Steve问题在于,您正在容器视图定义中创建()子视图,因此相同的子视图实例将插入(或尝试插入

我正在尝试在单个把手模板中呈现containerView的多个实例


{{view“App.MyContainerView”}
只要不添加引用同一视图的附加{{view}}标记,上述代码就可以正常工作。我不明白为什么。。。我附上了一把完整的小提琴来演示这个问题。(检查控制台以查看抛出的错误)

抛出的错误是“您所做的某些事情导致视图在渲染后但在插入DOM之前重新渲染”

如有任何帮助/澄清,将不胜感激


Steve

问题在于,您正在容器视图定义中创建()子视图,因此相同的子视图实例将插入(或尝试插入)两次,每个实例对应一个容器视图。将那些create()更改为extend(),您就会没事了


作为extend()块的一部分设置的属性位于原型上,因此它们在实例之间共享。在容器视图的情况下,如果容器视图在其期望找到子视图的位置找到一个类,并因此拥有该子视图的自身实例,则容器视图将实例化该类,但如果原型上已存在实例,则容器视图将尝试使用该实例,由于containerview的另一个实例认为它拥有该子视图实例,并且已经插入了该实例,因此该实例将被放大。

问题在于,您正在容器视图定义中创建()子视图,因此相同的子视图实例将被(或试图)插入两次,每个容器视图实例一个。将那些create()更改为extend(),您就会没事了


作为extend()块的一部分设置的属性位于原型上,因此它们在实例之间共享。在容器视图的情况下,如果容器视图在其期望找到子视图的位置找到一个类,并因此拥有该子视图的自身实例,则容器视图将实例化该类,但如果原型上已存在实例,则容器视图将尝试使用该实例,由于containerview的另一个实例认为它拥有该子视图实例,并且已经插入了该实例,所以它就爆炸了。

在这里和irc中都非常有用。谢谢你的帮助。为了让其他人满意,这里有一把完整的小提琴,它展示了在这里和irc中非常有用的正确行为。谢谢你的帮助。为了让别人满意,这里有一把完整的小提琴,显示了正确的行为
<script type='text/x-handlebars'>
  {{ view "App.MyContainerView" }}
</script>