最近想要在微信小程序项目中封装一个全局使用的过滤器,将时间戳格式转化为年月日格式,根据官网提示,在utils文件夹中新建一个.wxs为后缀的文件,然后写入自己的代码,在想要试用时间格式过滤器的画面引用,看起来清晰明了有简单。
但是,最终发现无效,真是不能理解,代码如下:
1.utils文件夹中创建的util.wxs文件:
var formatDate = function (timestamp, option) {
var date = getDate(timestamp);
var year = date.getFullYear()
var month = date.getMonth() + 1
var day = date.getDate()
var hour = function () {
return date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
}
var minute = function () {
return date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
}
var second = function () {
return date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
}
//获取 年月日
if (option == 'YY-MM-DD') return " " + year + "-" + month + "-" + day;
//获取年月
if (option == 'YY-MM') return " " + year + "-" + month;
//获取年
if (option == 'YY') return " " + year;
//获取月
if (option == 'MM') return " " + month;
//获取日
if (option == 'DD') return " " + day;
//获取昨天
if (option == 'yesterday') return " " + day - 1;
//获取时分秒
if (option == 'hh-mm-ss') return " " + hour() + ":" + minute() + ":" + second();
//获取时分
if (option == 'hh-mm') return " " + hour() + ":" + minute();
//获取分秒
if (option == 'mm-ss') return minute() + ":" + second();
//获取分
if (option == 'mm') return minute();
//获取秒
if (option == 'ss') return second();
//默认时分秒年月日
return year + '-' + month + '-' + day + ' ' + hour() + ':' + minute() + ":" + second();
}
module.exports = {formatDate:formatDate}
2.使用该过滤器的某个.wxml画面的引用代码:
<wxs src = "../../utils/util.wxs" module = "filter" />
3.引用完在.wxml中正式使用该过滤器:
<text bindtap="actionShow">{{filter.formatDate(month,'YY-MM')}}</text>
一套流程下来我觉得是没有任何问题的,结果没有任何反应,连报错都没有,不知道是不是本人做了自定义tabbar的原因。
后来,为了不再无谓的问题上浪费太多时间,我把wxs直接写在了.wxml文件内引用,就生效了。
<text bindtap="actionShow">{{filter.formatDate(month,'YY-MM')}}</text>
<wxs module="filter">
var toFixed = function (value) {
return value.toFixed(2);
}
var formatDate = function (timestamp, option) {
var date = getDate(timestamp);
var year = date.getFullYear()
var month = date.getMonth() + 1
var day = date.getDate()
var hour = function () {
return date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
}
var minute = function () {
return date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
}
var second = function () {
return date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
}
//获取 年月日
if (option == 'YY-MM-DD') return " " + year + "-" + month + "-" + day;
//获取年月
if (option == 'YY-MM') return " " + year + "-" + month;
//获取年
if (option == 'YY') return " " + year;
//获取月
if (option == 'MM') return " " + month;
//获取日
if (option == 'DD') return " " + day;
//获取昨天
if (option == 'yesterday') return " " + day - 1;
//获取时分秒
if (option == 'hh-mm-ss') return " " + hour() + ":" + minute() + ":" + second();
//获取时分
if (option == 'hh-mm') return " " + hour() + ":" + minute();
//获取分秒
if (option == 'mm-ss') return minute() + ":" + second();
//获取分
if (option == 'mm') return minute();
//获取秒
if (option == 'ss') return second();
//默认时分秒年月日
return year + '-' + month + '-' + day + ' ' + hour() + ':' + minute() + ":" + second();
}
module.exports = {
formatDate:formatDate
}
</wxs>
虽然也能用,但是这就表示我需要在每个想使用时间格式过滤器的画面都写一遍wxs代码,感觉失去了封装的意义,希望有大佬不能帮我解决这个困惑~