js模板引擎库mustache中类似if判断的处理及handlebars.js 基本处理⽅式这⾥就不说了,原⽂档中有说明,这⾥说下它的⽋缺的地⽅,⽐如if判断,它是没有的。它的优势就是纯粹的渲染,那些个分⽀判断逻辑对于mustache都应当是外部处理的(它内部是有if逻辑判断处理的,只是对于⼀个只想表达对对象进⾏渲染的js库来说,这些个语法糖应当是其它逻辑单元处理的,⽽不应由mustache担当,不知道我这么描述各位看客是否能理解)。
mustache的逻辑判断符中有2个很有意思的符号很重要:# ^ 。利⽤2个组合即可实现类似if的处理
采纳
native american当然,如果你嫌⿇烦可以在后端或者前端对要渲染的数据进⾏处理,后端这⾥就不说了,说说前端,js本⾝是动态脚本,能很⽅便的对它写⼊属性对象,⽽mustache渲染how stuff works
的其中⼀个特点就是函数对象的渲染:
职责英文View:
{在线汉英互译
"beatles": [
the way you look tonight
{ "firstName": "John", "lastName": "Lennon" },
英语在线翻译阅读{ "firstName": "Paul", "lastName": "McCartney" },
{ "firstName": "George", "lastName": "Harrison" },
{ "firstName": "Ringo", "lastName": "Starr" }
],
"name": function () {
return this.firstName + " " + this.lastName;
艾米 怀恩豪斯
}
}
Template:
{{#beatles}}
* {{name}}
{{/beatles}}
Output:
* John Lennon
* Paul McCartney
* George Harrison
* Ringo Starr
这个时候,我们可以对⽬标js对象进⾏函数属性的写⼊,⽐如:nac
$(result.data).each(function(idx, item) {
item['transformstate'] = function() {服装营销技巧
return item['state'] == 1 ? "正常": (item['state'] == 2 ? "删除": "禁⽤");
};
});
然后我们将模板中之前的state节点的渲染修改成{{transformstate}}即可。这⾥要注意下,默认函数属性对象如果返回值有html则⾃动转义的输出的,要是不想
上⾯说了这么多,也⽆⾮是⼀种硬码处理⽅式,如果不想写那么多代码,可以使⽤另⼀个模板引擎handlebars.js,它是mustache的超集,向后兼任语法和使⽤,它的地址