如何在手柄模板中呈现同一视图的多个实例

时间:2013-02-26 19:52:27

标签: ember.js handlebars.js

我试图在单个把手模板中渲染一个containerView的多个实例。

http://jsfiddle.net/skane/bZFB3/4/

<script type='text/x-handlebars'>
  {{ view "App.MyContainerView" }}
</script>

只要我不添加引用相同View的其他{{view}}标记,上述代码就能正常运行。我不明白为什么......我附上了一个完整的小提琴来证明这个问题。 (检查控制台以查看引发的错误)。

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

任何帮助/澄清都将不胜感激!

史蒂夫

1 个答案:

答案 0 :(得分:4)

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

设置为extend()块一部分的属性在原型上,因此它们在实例之间共享。在容器视图的情况下,容器视图将实例化一个类,如果它找到一个它期望找到子视图的类,并因此具有该子视图的自己的实例,但是如果原型上已存在实例,它将尝试使用它,然后爆炸,因为containerview的另一个实例认为它拥有该子视图实例并已插入它。