ember.js
  • handlebars.js
  • 2013-07-16 42 views 1 likes 
    1

    我有Handlebars模板的范围问题。我有一个模块列表,其中每个模块都包含一个服务列表。所以我有这样的一个模板(有一些标记删除):Ember.js把手范围问题

    {{#each controller}} 
        <a onclick='$(".{{unbound uuid}}").toggle(0);'> 
    
        {{#each service in services}} 
         <div class='{{unbound uuid}}'></div> 
        {{/each}} 
    {{/each}} 
    

    的问题是,第二{{unbound uuid}}不会被取代。如果我尝试访问外部范围的任何其他项目,则会发生同样的情况。但是,Ember.js网站说使用each ... in帮手应该保留外部范围。我究竟做错了什么?

    (FYI:使用最新版本Ember.js,灰烬数据和把手的)。

    +0

    此博客文章(http://www.emberist.com/2012/04/06/bind-and-bindattr.html)解释了为什么您需要使用“{{bindAttr}}”而不是正常的句柄'{{...}}'。 – CraigTeegarden

    +0

    这不是我的问题。使用'unbound'关键字可以很好地处理这个问题(因为我并不需要绑定)。我的问题是与范围。正如您在我对Gevious的回答的评论中看到的那样,它仍然没有对uuid进行正确的替换。 – GJK

    +0

    尝试在内部作用域中记录你的'uuid',比如'{{#each service in services}} {{log uuid}} {{/ each}}'你在控制台中看到记录的'uuid'吗? – intuitivepixel

    回答

    1

    也许这是正确的语法?

    {{#each item in controller}} 
        <a onclick='$(".{{unbound item.uuid}}").toggle(0);'> 
    
        {{#each service in services}} 
        <div class='{{unbound item.uuid}}'></div> 
        {{/each}} 
    {{/each}} 
    
    +0

    这也适用,这使我相信,使用'controller'变量时范围是不同的。这应该在Ember.js文档中更清楚一点。无论哪种方式,谢谢。很高兴有这个解决。 – GJK

    相关问题