Unbound ember每个帮助程序没有脚本标记

时间:2014-04-30 17:39:22

标签: javascript ember.js handlebars.js

我和Ember有一个奇怪的问题,我真的需要解决这个问题

我有以下内容:

{{#unbound each items}}
    <span>{{unbound myValue}}</span>
    {{unbound view App.MyView content=this.subItems}}
{{/unbound}}

应该 输出以下内容:

<div>
    <span>First item</span>
    <div>
        ...first other view...
    </div>
    <div>
        ...nth other view...
    </div>
</div>
    ...
<div>
    <span>nth item</span>
    <div>
        ...first other view...
    </div>
    <div>
        ...nth other view...
    </div>
</div>

有两件事需要注意:

  1. 我没有使用集合处理程序...它为它创建的视图添加了一个额外的div,我不能将它用于我正在使用的插件...我 - 有 - 保留DOM

  2. 所需的结构
  3. 应该没有变形标签......这个结构中的任何内容都不需要绑定,变形标签会影响我的插件的功能

  4. 现在,问题在于:我使用了上面的'#unbound each'帮助器,理论上它应该输出上面的DOM结构。 相反 我仍然从每个块获得变形标记:

    <script id="metamorph-0-start"></script>
    <script id="metamorph-1-start"></script>
    <div>
        <span>First item</span>
        <div>
            ...first other view...
        </div>
        <div>
            ...nth other view...
        </div>
    </div>
    <script id="metamorph-1-end"></script>
    <script id="metamorph-0-end"></script>
        ...
    <script id="metamorph-n0-start"></script>
    <script id="metamorph-n1-start"></script>
    <div>
        <span>nth item</span>
        <div>
            ...first other view...
        </div>
        <div>
            ...nth other view...
        </div>
    </div>
    <script id="metamorph-n1-end"></script>
    <script id="metamorph-n0-end"></script>
    

    我在这里做错了什么?

    这是一个真实的JS Fiddle,展示了这个问题: http://jsfiddle.net/NQKvy/942/

1 个答案:

答案 0 :(得分:4)

{{unbound}}帮助程序不能作为块助手工作,不能与{{each}}

一起使用

您总是需要在特定属性上使用它:

{{unbound myProperty}}

请参阅github上讨论此问题的此帖子:https://github.com/emberjs/ember.js/pull/1457

好消息是,在HTMLBars问世之前(最后我看到他们正在为Ember 1.8拍摄)你可以使用{{group}}助手。它不是ember核心的一部分,但我已经成功地使用了它与Ember 1.5,它将为你摆脱变形(以及数据绑定)。

在此处下载:

  

https://github.com/emberjs/group-helper

最简单的方法就是将https://github.com/emberjs/group-helper/blob/master/packages/group-helper/lib/main.js的内容复制到您自己的帮手中。

然后你可以这样做:

{{#group}}
   {{#each items}}
       <span>{{unbound myValue}}</span>
       {{view App.MyView content=this.subItems}} 
   {{/each}}
{{/group}}

注意:正如Robert在下面的评论中所述,{{#group}}助手也会影响视图本身。

希望有所帮助!