在模板中调用mustache变量的方法

时间:2013-12-06 17:24:52

标签: javascript jquery mustache

我有一个小胡子模板,我想在胡子变量上调用一些函数(在本例中为{{name}})。具体来说,我想在名称变量上调用toLowerCase()方法。

<tbody>
  <script id="mytemplate" type="text/template">
    {{#cat}}
      <tr data-index="{{age}}-{{name}}"></tr>
    {{/cat}}
  </script>
</tbody>

我试着查看胡子文档,但我找不到如何做到这一点。我试着做了

  1. <tr data-index="{{age}}-{{name.toLowerCase()}}"></tr>
  2. <tr data-index="{{age}}-{{name}}.toLowerCase()"></tr>
  3. 但我没有得到我的期望。我使用此代码渲染模板,该代码在文档就绪时触发。

    $(function() {
          $.getJSON('/cats.json', function(data){
            var template = $("#mytemplate").html();
            var view     = Mustache.to_html(template, data);
            $("tbody").html(view);
          });
      })
    

1 个答案:

答案 0 :(得分:7)

您需要将function作为数据的一部分传递,如下所示:

$(function() {
      $.getJSON('/cats.json', function(data){
        data.lower = function () {
          return function (text, render) {
             //wrong line return render(text.toLowerCase());
             return render(text).toLowerCase();
          }
        };
        var template = $("#mytemplate").html();
        var view     = Mustache.to_html(template, data);
        $("tbody").html(view);
      });
  })

和模板:

<tr data-index="{{age}}-{{#lower}}{{name}}{{/lower}}"></tr>