このjsfiddleで非常に奇妙な動作が見られます。
私はアコーディオンコントロールを構築しているので(最終的にはember-bootstrapにうまく貢献することを願っています)、layout
ビューのコンテンツをラップするために使用するビュークラスを構築しました。
Bootstrap.Accordion = Ember.View.extend({
tagName: 'div',
classNames: 'accordion',
layout: Ember.Handlebars.compile('{{yield}}')
});
{{#view}}
次に、ヘルパーと一緒にそのように使用し、{{#each}}
最終的にアコーディオンコントロールの内部を設定するための他のビューを含むブロックを含めます。そして、これまでの1つのケースでは、同じテンプレートでこれを2回実行して、2つの異なるアコーディオンコントロールに異なる情報を表示します。
{{#view Bootstrap.Accordion}}
{{#each content}}
<div><strong>Field 1:</strong> {{field1}}</div>
{{/each}}
{{/view}}
{{#view Bootstrap.Accordion}}
{{#each content}}
<div><strong>Field 2:</strong> {{field2}}</div>
{{/each}}
{{/view}}
しかし、フィドルでわかるように、これは非常に予期しない結果をもたらします。基本的に、ビューの2番目のインスタンスは、最初のインスタンスの正確なコピーです。ブロック内の静的コンテンツでさえ{{#each}}
正しくありません:
Field 1: Instance 1 Field 1
Field 1: Instance 2 Field 1
Field 1: Instance 1 Field 1
Field 1: Instance 2 Field 1
{{#view...}}
ただし、ヘルパーとヘルパーの間に何かを置くと{{#each}}
、期待どおりに動作します。
{{#view Bootstrap.Accordion}}
Fourth try...
{{#each content}}
<div><strong>Field 4:</strong> {{field4}}</div>
{{/each}}
{{/view}}
したがって、ヘルパー内で直接コンテンツが類似しているために、結果がハンドルバーなどによってキャッシュされるように見えます。{{#view}}
それはただの野蛮な仮説です。誰かがここで何が悪いのか見ることができますか?
(Bootstrapライブラリはフィドルに含まれていないため、Bootstrapが何かを間違えている可能性はありません。)