由于微信小程序生态略为封闭,修改源码不太实际,所以{{}}内的管道符号写法目前很难实现,那么我们是否能在{{}}内调用函数来模仿filter的功能呢?然而微信小程序和Vue Angular等不同,并不能在{{}}内调用自定义函数,甚至toString() parseInt()等js内置函数都无法调用,这一点也坑害了不少开发人员。
但如今有了WXS模块,我们可以用其编写脚本函数,在wxss页面中引入并调用,官方文档戳这里->WXS·小程序
我们来写两个过滤器函数,一个实现日期格式,另一个实现金额保留两位小数。
首先在utils目录下创建一个filter.wxs
在filter.js中编写这两个函数并导出:
// filter.wxs var dateFormat = function(date) { var dates = date.split('/'); return dates[0] + "年" + dates[1] + "月" + dates[2] + "日"; } var moneyFormat = function(money) { return money.toFixed(2); } /* * 导出 */ module.exports = { dateFormat: dateFormat, moneyFormat: moneyFormat }
index.js中定义date和money:
//index.js Page({ data: { date: "2018/8/5", money:280.8888888 } })
index.wxss中引入wxs模块并使用:
<!-- page/index/index.wxml --> <!-- src引入filter.wxs, module给模块起名 --> <wxs src="../../utils/filter.wxs" module="filter" /> <!-- 调用filter模块里的dateFormat函数 --> <view>{{filter.dateFormat(date)}}</view> <!-- 调用filter模块里的moneyFormat函数 --> <view>{{filter.moneyFormat(money)}}</view>