2013-07-16 4 views
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, Ember-данных и рули.)

+0

Этот блог (http://www.emberist.com/2012/04/06/bind-and-bindattr.html) объясняет, почему вы должны использовать '{{bindAttr}}' вместо нормального handlebars '{{...}}'. – CraigTeegarden

+0

Это не моя проблема. Использование ключевого слова 'unbound' позаботится об этом красиво (поскольку на самом деле мне не нужна привязка). Моя проблема связана с областью. И, как вы можете видеть в моем комментарии к Gevious 'answer, он по-прежнему не делает правильной замены для '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