2015-03-30 2 views
0

Я пытаюсь создать специальный «if_eq» помощник для приложения Handlebars/Ember. Помощник вызывается со следующим синтаксисом: {{#if_eq item.name 'bob'}}, но получает 2 строковых значения для сравнения (буквально «item.name» и «bob») вместо значения «item» .name "в контексте, который был вызван. Интересно, что я могу делать неправильно. Благодаря!Handlebars helper не получает значение переменной

Соответствующие фрагменты кода перечислены ниже, а также создали jsbin для иллюстрации проблемы here

Helper Код

Handlebars.registerHelper('if_eq', function(a, b, opts) { 
    console.log("Comparing ", a, b); 
    if(a == b) 
     return opts.fn(this); 
    else 
     return opts.inverse(this); 
}); 

код шаблона

<ul> 
    {{#each item in model}} 
     {{#if_eq item.name 'bob'}} 
      <li>We have a bob here!</option> 
     {{else}} 
      <li>A non-bob</li> 
     {{/if_eq}} 
    {{/each}} 
</ul> 

ответ

2

Рули хелперы надевают» t играет хорошо со связанными свойствами.

Как правило, вы захотите избежать такой логики в своих шаблонах. В частности, либо создайте метод на вашем контроллере, либо сам объект, чтобы вы сказали что-то вроде: if item.isBob.

E.g. http://emberjs.jsbin.com/fudadugemu/2/edit?html,js,output

Или вы могли бы использовать компонент и немного развлечься с ним, что-то вроде этого:

http://emberjs.jsbin.com/buyeqenumo/2/edit

(попробуйте изменить вход боб)

+1

Эй Кари, спасибо за ответ. Разочарован, чтобы услышать, что помощники не работают со связанными свойствами ... в значительной степени делает их бесполезными. Возможно ли работать с несвязанными свойствами? Подумайте, что я немного ошибался в библиотеках вспомогательных инструментов руля, таких как: https://github.com/danharper/Handlebars-Helpers, но они страдают от одной и той же проблемы. Кажется, – MackelRow

+0

Когда я говорю: «Не играй хорошо, «Я имею в виду, вы можете это сделать, просто нужно прыгать через обручи. Если у вас действительно есть ваше сердце, сделайте это, хотя: http://emberjs.com/api/classes/Ember.Handlebars.html#toc_example-with-multiple-bound-properties –

Смежные вопросы