【发布时间】:2014-07-17 18:00:21
【问题描述】:
【问题讨论】:
-
好的,看起来这是答案,如果有人在看stackoverflow.com/questions/16589624/…
标签: javascript templates ember.js conditional handlebars.js
【问题讨论】:
标签: javascript templates ember.js conditional handlebars.js
你应该把逻辑移到你的控制器上
App.SomeController = Em.Controller.extend({
foo: true,
bar: false,
fooOrBar: Em.computed.or('foo', 'bar')
});
尽量减少模板逻辑
{{#if fooOrBar}}
【讨论】:
使用https://github.com/jmurphyau/ember-truth-helpers:
ember install ember-truth-helpers
那你可以说
{{#if (or foo bar)}}
根据您的观点,Kingpin2k's answer 有点过时了。以前,社区的理解是模板应该在很大程度上没有逻辑。随着时间的推移,我们的观点已经转向在模板中添加更多的声明性逻辑——ember-composable-helpers 就是一个很好的例子。
【讨论】:
您可以创建自定义 Handlebar 辅助函数来检查条件运算符。
Ember.Handlebars.registerHelper('ifCond', function (temp_v1, operator, temp_v2, options) {
var v1,v2;
v1 = Ember.Handlebars.get(this, temp_v1, options);
v2 = Ember.Handlebars.get(this, temp_v2, 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);
default:
return options.inverse(this);
}
});
你可以在你的模板中调用它
{{#ifCond foo '||' bar}}
<div>Conditional helpers works </div>
{{/ifCond}}
【讨论】: