我正在使用自定义把手寄存器帮助程序来检查条件运算符(&&,||,==)并在我的每个帮助程序中调用寄存器帮助程序,该模板由Route中的模型支持。
但是当我将值从模型传递给自定义帮助器时,该值不会传递给帮助程序,而是传递字符串。
模板:
<script type="text/x-handlebars" data-template-name="index">
<ul>
{{#each item in model}}
{{#ifCond item '==' 'red'}}
<li>{{item}}</li>
{{/ifCond}}
{{/each}}
</ul>
</script>
路线:
App.IndexRoute = Ember.Route.extend({
model: function() {
return ['red', 'yellow', 'blue', 'red', 'blue', 'pink'];
}
});
ifCond Register Helper:
Handlebars.registerHelper('ifCond', function (v1, operator, v2, options) {
console.log(v1); //item - Here the value is coming as such and not the model value.
console.log(v2); // red
console.log(operator); // ==
console.log(options);
switch (operator) {
case '==':
return (v1 == v2) ? options.fn(this) : options.inverse(this);
case '===':
return (v1 === v2) ? options.fn(this) : options.inverse(this);
case '<':
return (v1 < v2) ? options.fn(this) : options.inverse(this);
case '<=':
return (v1 <= v2) ? options.fn(this) : options.inverse(this);
case '>':
return (v1 > v2) ? options.fn(this) : options.inverse(this);
case '>=':
return (v1 >= v2) ? options.fn(this) : options.inverse(this);
case '&&':
return (v1 && v2) ? options.fn(this) : options.inverse(this);
case '||':
return (v1 || v2) ? options.fn(this) : options.inverse(this);
default:
return options.inverse(this);
}
});
如何将模型中的值传递给自定义帮助程序。
JSBin - &gt; Link
答案 0 :(得分:0)
如果要检索对象值,则需要获取它。
v1 = Ember.Handlebars.get(this, v1, options);