1

この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が何かを間違えている可能性はありません。)

4

1 に答える 1

0

これはバグのようです。

このgithubの問題{{#linkTo}}は、ヘルパーのみを使用して本日作成されました。

これはすべてのブロックヘルパーで発生しているようです。

于 2013-03-04T16:20:14.067 に答える