我有一个像bellow一样的把手模板,
<script id="pins-list-template" type="text/x-handlebars-template">
{{#if ListCount > 0}}
<ul>
{{#each ListData}}
<li>
<img src="assets/3dimage.png" data-src="{{thumbURL}}"/>
</li>
{{/each}}
</ul>
{{else}}
Empty Result
{{/if}}
</script>
如果我尝试渲染这个,我收到此错误,
错误:第3行的解析错误:{{#if ListCount&gt; 0}} { ---------------- ^期待'CLOSE','CLOSE_UNESCAPED','STRING','INTEGER','BOOLEAN','OPEN_SEXPR','CLOSE_SEXPR','ID', '等于', 'DATA','SEP','无效'
答案 0 :(得分:1)
尝试使用main array.length而不是&gt; 0
{{#if ListData.length}}
<ul>
{{#each ListData}}
<li>
<img src="assets/3dimage.png" data-src="{{thumbURL}}"/>
</li>
{{/each}}
</ul>
{{else}}
Empty Result
{{/if}}
为了使用&gt; 0你需要写一个帮手(例如更大)
铌! Javascript使用camelCase命名约定,只有类是大写的。
答案 1 :(得分:0)
尝试在JavaScript中评估函数,然后在上下文中传递结果:
context.ListHasData = (context.ListCount > 0);
YourHandleBarsTemplate(context);
答案 2 :(得分:0)
我搜索并找到了解决方案。 看一看:http://jsfiddle.net/a9wjbsch/520/ 你需要使用把手帮手:)
Handlebars.registerHelper('compare', function (lvalue, rvalue, options) {
if (arguments.length < 3)
throw new Error("Handlerbars Helper 'compare' needs 2 parameters");
var operator = options.hash.operator || "==";
var operators = {
'==': function (l, r) { return l == r; },
'===': function (l, r) { return l === r; },
'!=': function (l, r) { return l != r; },
'<': function (l, r) { return l < r; },
'>': function (l, r) { return l > r; },
'<=': function (l, r) { return l <= r; },
'>=': function (l, r) { return l >= r; },
'typeof': function (l, r) { return typeof l == r; }
}
if (!operators[operator])
throw new Error("Handlerbars Helper 'compare' doesn't know the operator " + operator);
var result = operators[operator](lvalue, rvalue);
if (result) {
return options.fn(this);
} else {
return options.inverse(this);
}