0

単一のハンドルバーテンプレートでcontainerViewの複数のインスタンスをレンダリングしようとしています。

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

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

上記のコードは、同じビューを参照する{{view}}タグを追加しない限り正しく機能します。理由がわかりません...問題を示す完全なフィドルを添付しました。(コンソールをチェックして、スローされるエラーを確認してください)。

スローされるエラーは、「ビューがレンダリングされた後、DOMに挿入される前に、ビューが再レンダリングされた原因」です。

どんな助け/説明もいただければ幸いです!

スティーブ

4

1 に答える 1

4

問題は、コンテナ ビュー定義で子ビューを create() しているため、同じ子ビュー インスタンスがコンテナ ビューのインスタンスごとに 1 つずつ、2 回挿入されている (または挿入されようとしている) ことです。これらの create() を extend() に変更すれば問題ありません。

extend() ブロックの一部として設定されたプロパティはプロトタイプ上にあるため、インスタンス間で共有されます。コンテナー ビューの場合、コンテナー ビューは、子ビューが見つかると予想される場所にクラスが見つかった場合にクラスをインスタンス化し、その子ビューの独自のインスタンスを持ちますが、インスタンスがプロトタイプに既に存在する場合は、それを使用しようとすると、コンテナビューの別のインスタンスがその子ビューインスタンスを所有していると見なされ、すでに挿入されているため、爆発します。

于 2013-02-26T20:53:35.593 に答える