2016-02-22 101 views
0

我試圖在車把返回從輔助函數的值並顯示它 這裏是我的代碼 -把手輔助函數

<div id="test"></div> 
<script id="template" type="text/x-handlebars-template"> 
{{#each this}} 

<hr/> 


<div id="table"> 
    <table> 
    <tr> 
     <td> 
      <div id="steps" style="color: #000000; font-size:36px;">{{steps}}</div><br></td> 
     </td> 
    </tr> 


</table> 
</div> 
{{/each}} 
</script> 
<script 
    src="http://cdnjs.cloudflare.com/ajax/libs/mustache.js/0.7.0/mustache.min.js"></script> 
<script type="text/javascript" 
    src="//ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.min.js"></script> 
<script 
    src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.js"></script> 
<script> 
    $(document) 
      .ready(
        function() { 

         var source = $("#template").html(); 
         var template = Handlebars.compile(source); 

         var rdata = [ { 
          "totalSteps" : 100, 
          "name" : "Dummy", 
          "heightFeet" : 5, 
          "averageSteps" : 10, 
         }, { 
          "totalSteps" : 10000, 
          "name" : "TestMan", 
          "heightFeet" : 4, 
          "averageSteps" : 10, 
         } ]; 
         Handlebars.registerHelper('steps', function(rdata,index) { 

          var val=rdata[index].totalSteps; 
          return val.toLocaleString(); 
         }); 

         var ht = template(rdata); 

         $("#test").html(ht); 
     }); 

</script> 

但是,我得到這個錯誤

Uncaught TypeError: Cannot read property 'totalSteps' of undefined 

而且,我試圖寫這樣的功能 -

$("#class").each function(index) { 
return rdata[index].totalSteps; 
}); 

但它不顯示任何東西。 任何人都可以請幫我解決這個問題。

+0

是什麼你的模板是什麼樣子? – blessenm

+0

模板片段已在代碼 – Newbie

回答

0

您需要將所需數據傳遞給幫助程序。這是一個簡化版本。

{{#each rdata as |value index|}} 
    {{steps ../rdata index}} 
{{/each}} 

{ 
    rdata: [ { 
    totalSteps: 100, 
    name: "Dummy", 
    heightFeet: 5, 
    averageSteps : 10, 
    }, { 
    totalSteps : 10000, 
    name: "TestMan", 
    heightFeet: 4, 
    averageSteps: 10, 
    }] 
} 

Handlebars.registerHelper('steps', function(rdata,index) { 
    var val=rdata[index].totalSteps; 
    return val.toLocaleString(); 
}); 

上面的例子中tryhandlebarsjs

+0

中不起作用 – Newbie

+0

然後,您需要在jsbin.com中創建一個失敗的bin – blessenm

0

工作我只是做這個

Handlebars.registerHelper('steps', function() { 
          return this.totalSteps; 
});