У меня есть этот зарегистрированный помощник руля в ember1.7 прямо сейчас.Как перевести помощники руля типа #if из ember 1.7 в ember-cli (2.3)
var get = Ember.Handlebars.get;
Ember.Handlebars.registerHelper('ifCond', function(val1, val2, options) {
var context = (options.fn.contexts && options.fn.contexts[0]) || this;
var val1 = get(context, val1, options.fn);
if (val1 == val2) {
return options.fn(this);
} else {
return options.inverse(this);
}
});
Идея довольно проста: взять первый параметр как свойство контекста, второй параметр в качестве фактического значения и возвращает логическое значение на основе их равенства. Так, например, если у меня есть свойство возраста на пользователем объекта,
{{#ifCond user.age "22" }}
<h2> Twin Twos!</h2>
{{/ifCond}}
будет сниппет я хотел бы использовать, чтобы сделать элемент h2, когда условие выполняется.
Однако я не могу понять, как перевести такого помощника на ember-cli.
Я рассмотрел возможность создания компонента, но мне нужен условный, а не тот, который отображает определенный набор элементов DOM. Я чувствую, что что-то упускаю. Как я смогу сделать {{#ifCond}} работу в Ember 2.3?
EDIT: Я нашел документ создания помощник, который позволит мне этой реализации:
import Ember from 'ember';
export function ifCond(params/*, hash*/) {
return (params[0] === params[1]);
// return params;
}
export default Ember.Helper.helper(ifCond);
однако, для того чтобы это работало, я должен был бы написать (в шаблоне)
{{#if (ifCond 1 1)}}
yep
{{/if}}
Есть ли еще способ использовать помощник руля, как мы могли бы в ember 1.7?
Публиковать это в качестве комментария, так как это не прямой ответ, но я рекомендую посмотреть [ember-truth-helpers] (https://github.com/jmurphyau/ember-truth-helpers). Очень полезный и надежный аддон. – locks
После изучения немного больше, ваш ответ после редактирования - лучший путь вперед, если вы не хотите вводить дополнительную зависимость. – locks
Спасибо, что посмотрели. Из моего собственного исследования также кажется, что это ... принятая «каноническая» эволюция помощника рулей. Я уточню его как правильный ответ. – Darshan