Я пытаюсь создать специальный «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>
Эй Кари, спасибо за ответ. Разочарован, чтобы услышать, что помощники не работают со связанными свойствами ... в значительной степени делает их бесполезными. Возможно ли работать с несвязанными свойствами? Подумайте, что я немного ошибался в библиотеках вспомогательных инструментов руля, таких как: https://github.com/danharper/Handlebars-Helpers, но они страдают от одной и той же проблемы. Кажется, – MackelRow
Когда я говорю: «Не играй хорошо, «Я имею в виду, вы можете это сделать, просто нужно прыгать через обручи. Если у вас действительно есть ваше сердце, сделайте это, хотя: http://emberjs.com/api/classes/Ember.Handlebars.html#toc_example-with-multiple-bound-properties –