2014-10-27 48 views
0

我有这样的帮手把手附加于辅助输出

Handlebars.registerHelper('star-score', function(score, maxScore, options) { 
    var output; 

    for(var i = 1; i <= maxScore; i++) { 
     if (score >= i) { 
      output = output + '<span class="star full">&nbsp;</span>'; 
     } else { 
      output = output + '<span class="star empty">&nbsp;</span>'; 
     } 
    } 

    return new Handlebars.SafeString(output); 
}); 

基本上就是我想要做的就是通过这个帮助一些数字,我希望它基于数值得分

生成用户评价星级“未定义”

这是我如何把这个帮手

<div class="user-score"> 
    {{star-score establishment.user_score 5}} 
</div> 

但是,什么是有趣的是,导致代码看起来像这样

<div class="user-score"> 
    undefined 
    <span class="star full">&nbsp;</span> 
    <span class="star full">&nbsp;</span> 
    <span class="star full">&nbsp;</span> 
    <span class="star empty">&nbsp;</span> 
    <span class="star empty">&nbsp;</span> 
</div> 

我不知道这个“未定义”是从哪里来的。我不知道如何排除故障。开发者控制台中没有错误。我究竟做错了什么?

+1

尝试设置输出为空字符串第一个'var output =“”' – Quince 2014-10-27 14:16:02

+0

像魅力一样工作。总是初始化变量的好教训。谢谢! – Sk1ppeR 2014-10-27 14:28:31

+0

生病让它成为答案 – Quince 2014-10-27 14:29:07

回答

2

第一次循环运行输出为undefined,所以它的计算结果为以下

output = undefined + '<span class="star full">&nbsp;</span>'; 

只是初始化输出为空字符串来解决这个问题

var output = "";