好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

JS中art-template模板使用过滤器问题

art-template模板使用过滤器

html有个特点:某些小数会变成无限小数。

比如1.05,可能显示为1.049999999999……

在javascript中可以使用.toFixed(value);等方法,进行四舍五入处理,保留固定的小数位数。

但是,art-template模板进行渲染就不支持在模板中直接使用方法。

这时就需要用到art-template模板的过滤器。

语法:

?? ?<!--HTML-->
?? ?<script type="text/html" id="template">
?? ??? ?{{date|过滤器名称}}
?? ?</script>

?? ?template.defaults.imports.过滤器名称 = function(date){
?? ? ? ?处理内容
?? ? ? ?return 处理结果
?? ?};

举个栗子

?? ?<div class="box"></div>
?? ?<script type="text/html" id="template">
?? ??? ?<div class="total-price">
?? ??? ??? ?{{list.unit-price*list.num|format}} 元
?? ??? ?</div>
?? ?</script>

?? ?render(data){
?? ??? ?// art-template过滤器
?? ??? ?template.defaults.imports.format = function(n){
?? ??? ??? ?return n.toFixed(2);
?? ??? ?};
?? ??? ?// art-template模板渲染
?? ??? ?$(".box").html(template('template',{list:data}));
?? ?}

效果图

原本:

使用过滤器:

需要注意的是过滤器必须有一个返回值。

并且过滤器还有其他写法。

art-template过滤器(单值,多值)

art-template过滤器

链接: 官方文档-过滤器语法

过滤器处理一个值

HTML:<p>共有{{popWindow_val.freeFriend | friendNum}}位好友</p>

JS: template.defaults.imports.friendNum = function (value) {
? ? var length = value.length;
? ? return length;?
}

过滤器处理两个值

HTML:{{$imports.pkWord(pkList_val.freeTeam,pkList_val.zan)}}

JS:template.defaults.imports.pkWord = function (value,zan) {
? ? ? ? for (var i = 0, len = value.length; i < len; i++) {
? ? ? ? ? ? if (value[i].status == 2 || value[i].status == 3) {
? ? ? ? ? ? ? ? return "小组中已有人集齐点赞,赶紧分享好友,完成时间最短即可免单。";
? ? ? ? ? ? }
? ? ? ? } ??
? ? ? ? var word = 'PK已发起,请在24小时内集齐' + zan + '个赞,小组内完成集赞耗时最短者即可免单。'
? ? ? ? return word;
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

查看更多关于JS中art-template模板使用过滤器问题的详细内容...

  阅读:35次