Handlebar助手arrarify
用于将对象对象转换为对象数组
handlebarsHelper.js
Handlebars.registerHelper('arrayify',function(obj){
result = [];
for (var key in obj) result.push({name:key,value:obj[key]});
return result;
});
客户端/视图/ main.html中
<template name="orderList">
{{#each arrayify orderList}}
{{value.amount}} {{ value.name }}
{{/each}}
</template>
客户端/视图/ main.js
Template.orderList.orderList = function() {
// Retrieved from Collection
orderList = {
12345: {name: "apples_mackintosh", amount: 10},
12346: {name: "oranges_sunkiss", amount:5}
};
return orderList;
};
问题:如何将模板值oranges_sunkiss
呈现为oranges
,apples_mackintosh' as 'apples
?我尝试使用.split('_')[0]
,但Meteor抛出错误
客户端/视图/ main.html中
<template name="orderList">
{{#each arrayify orderList}}
{{value.amount}} {{ value.name.split('_')[0] }}
{{/each}}
</template>
错误
While building the application:
client/views/main.html:63: Parse error:
...unt}} {{ value.name.split('_')[0] }} @ {
-----------------------^
Expecting 'ID', got 'INVALID'
答案 0 :(得分:2)
我相信正在发生的事情是你试图在把手模板中使用JS代码。这是一个常见的问题/烦恼,但这样做是有充分理由的:实际的模板应该没有逻辑和代码。模板应该“哑”,仅用于显示目的。对于您的具体示例,请在orderedList
main.js
时将字符串拆分移至
Template.orderList.orderList = function() {
// Retrieved from Collection
orderList = {
12345: {name: "apples_mackintosh".split('_')[0], amount: 10},
12346: {name: "oranges_sunkiss".split('_')[0], amount:5}
};
return orderList;
};
答案 1 :(得分:0)
首先将其存储在某个变量中,然后通过javascript将其拆分或创建一些将被调用的辅助函数并返回拆分值。