1

我在这个 jsfiddle中看到了一些非常奇怪的行为。

我正在构建一个手风琴控件(希望最终对 ember-bootstrap 做出很好的贡献),因此我构建了一个layout用于包装视图内容的视图类:

Bootstrap.Accordion = Ember.View.extend({
    tagName: 'div',
    classNames: 'accordion',
    layout: Ember.Handlebars.compile('{{yield}}') 
});

然后我像这样与{{#view}}助手一起使用它,并包含一个{{#each}}块,该块最终将包含其他视图以设置手风琴控件的内部。到目前为止,在一种情况下,我在同一个模板中做了两次,在两个不同的手风琴控件中显示不同的信息,有点像这样:

{{#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}}

但是,正如您在小提琴中看到的那样,这会产生非常意想不到的结果。基本上,视图的第二个实例是第一个的精确副本。即使是块内的静态内容{{#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}}导致结果被 Handlebars 缓存......或其他东西。这只是一个疯狂的假设。谁能看到这里出了什么问题?

(请注意,小提琴中不包含 Bootstrap 库,因此 Bootstrap 不可能搞砸了。)

4

1 回答 1

0

这看起来像一个错误。

这个github 问题是今天创建的,只有{{#linkTo}}helper。

看起来所有块助手都会发生这种情况。

于 2013-03-04T16:20:14.067 回答