繁体   English   中英

把手辅助功能

[英]Handlebars Helper Function

我正在尝试从把手中的辅助函数返回一个值并显示它,这是我的代码-

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

但它不会显示任何内容。 谁能帮我解决这个问题。

您需要将所需的数据传递给助手。 这是一个简化的版本。

{{#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起作用

我只是这样做

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM