如何在mustache.js演示页面上使用lambdas?

时间:2013-06-05 21:56:40

标签: javascript templates mustache

我一直在努力让一个lambda与mustache.js demo一起工作。几乎所有在线演示lambdas的例子都是通过声明json与js内联来实现的。 我尝试了以下JSON:

{
  "planet": "The be the name",
  "lambda": "function() {return \"{{planet}}\"}"
}

带有以下胡须:

{{lambda}} 

..没有成功。有没有办法使用胡子演示页来演示lambdas?

我感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

看起来示例页面上不支持lambda,即使它们正常使用库也是如此。可能是疏忽,但我可能是错的。

答案 1 :(得分:1)

一个没有。将lambda表示为JSON是不可能的。你的例子只是两个字符串,如果你eval(),其中一个恰好是一个函数。这可行:

{
    "planet": "World",
    "lambda": function() { return "{{planet}}" }
}

...除了它是无效的JSON所以它不会:(

答案 2 :(得分:1)

我在我的js代码中声明了我的lambda。在我从服务器获取JSON并将其放入myVar之后,我会在调用Mustache.render之前执行以下操作:

myVar.myLambda = function(text,render) {
    return '<b>'+render(text)+'<b>';
}

render呈现在括号中传递的mustache变量,这是lambda函数的text参数,你应该在HTML中传递它:

<div class="blah"><p>The planet is: {{#myLambda}}{{planet}}{{/myLambda}}</p></div>