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

gpr*_*ant 5 javascript jquery mustache

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

<tbody>
  <script id="mytemplate" type="text/template">
    {{#cat}}
      <tr data-index="{{age}}-{{name}}"></tr>
    {{/cat}}
  </script>
</tbody>
Run Code Online (Sandbox Code Playgroud)

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

  1. <tr data-index="{{age}}-{{name.toLowerCase()}}"></tr>
  2. <tr data-index="{{age}}-{{name}}.toLowerCase()"></tr>

但我没有达到我的期望.我使用此代码渲染模板,该代码在文档就绪时触发.

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

kal*_*ley 7

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

$(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);
      });
  })
Run Code Online (Sandbox Code Playgroud)

和模板:

<tr data-index="{{age}}-{{#lower}}{{name}}{{/lower}}"></tr>
Run Code Online (Sandbox Code Playgroud)