2014-10-27 61 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 = "";