有没有办法改变像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方法,但在插值发生之前是否有其他方式像回调一样?
答案 0 :(得分:0)
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]);
解析出标签,您可以根据需要操作树,然后在完成后进行编译
答案 1 :(得分:0)
刚刚发现您可以覆盖Handlebars.Utils.escapeExpression
以在模板内实现此功能。