将对象转换为Meteor.JS把手中的数组后,无法拆分string

手把助手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呈现为“ orangesapples_mackintosh' as 'apples _ 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' 

我相信发生的事情是,你正在试图在句柄模板内使用JS代码。 这是一个常见的问题/烦恼,但它的完成有一个很好的理由:实际的模板应该没有逻辑和代码。 模板应该是“哑”,只用于显示目的。 对于您的具体示例,在main.js中创buildorderedList时将stringsplit移动到

 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; }; 

首先将其存储在某个variables中,然后通过javascript对其进行分割,或者创build一些将被调用的辅助函数并返回分割后的值。