1

有没有办法改变像 Mustache、Hogan 和 Handlebars 这样的库的默认输出?

例如,这是我的上下文:

var context = {
  primitive: 1,
  array: [1, 2, 3],
  object: new Object()
}

这就是我希望编译时的结果:

<div>
  Primitive: {{primitive}}
  Array: {{array}} should output <Array#id> instead of "1,2,3"
  Object: {{object}} should output <Object#id> instead of "[Object object]"
</div>

我知道我可以覆盖这些属性的 toString 方法,但是在插值发生之前还有其他方法可以像回调一样吗?

4

2 回答 2

0

可能有霍根,这取决于你真正想用它做什么; https://github.com/twitter/hogan.js#features

var text = "{{^check}}{{#i18n}}No{{/i18n}}{{/check}}";
text +=  "{{#check}}{{#i18n}}Yes{{/i18n}}{{/check}}";
var tree = Hogan.parse(Hogan.scan(text));

// outputs "# check"
console.log(tree[0].tag + " " + tree[0].name);

// outputs "Yes"
console.log(tree[1].nodes[0].nodes[0]);

标签被解析出来,你可以按照你认为合适的方式操作树,然后在完成后编译它

于 2013-11-20T22:06:50.303 回答
0

刚刚发现您可以覆盖Handlebars.Utils.escapeExpression以在模板中实现此目的。

于 2013-12-12T05:25:19.650 回答