文件结构:
.
├── src
│ ├── filter
│ │ ├── filter.js
│ │
│ └── main.js
└── ...
过滤器们放在filter
文件夹下
filter/filter.js:
这个文件主要是写了过滤器实现的方法,然后export
进行导出。
function filterOne(n){
return n + 10;
}
function filterTwo(n){
return n + 5;
}
export{
filterOne,
filterTwo
}
main.js:
// 找 filter/filter.js
import * as filters from './filter/filter.js'
//遍历所有导出的过滤器并添加到全局过滤器
Object.keys(filters).forEach((key) => {
Vue.filter(key, filters[key]);
})
在 .vue 组件下使用
{{test | filterOne}}
问题二:vue-cli工作中常用的过滤器
在 .vue 组件中的使用示例:
{{ string | trim(1) }} //去除所有空格,过滤器第一个参数为value
常用的过滤器,filter/filter.js
//去除空格 type 1-所有空格 2-前后空格 3-前空格 4-后空格
function trim(value, trim) {
switch (trim) {
case 1:
return value.replace(/s+/g, "");
case 2:
return value.replace(/(^s*)|(s*$)/g, "");
case 3:
return value.replace(/(^s*)/g, "");
case 4:
return value.replace(/(s*$)/g, "");
default:
return value;
}
}
//任意格式日期处理
//使用格式:
// {{ '2018-09-14 01:05' | formaDate(yyyy-MM-dd hh:mm:ss) }}
// {{ '2018-09-14 01:05' | formaDate(yyyy-MM-dd) }}
// {{ '2018-09-14 01:05' | formaDate(MM/dd) }} 等
function formaDate(value, fmt) {
var date = new Date(value);
var o = {
"M+": date.getMonth() + 1, //月份
"d+": date.getDate(), //日
"h+": date.getHours(), //小时
"m+": date.getMinutes(), //分
"s+": date.getSeconds(), //秒
"w+": date.getDay(), //星期
"q+": Math.floor((date.getMonth() + 3) / 3), //季度
"S": date.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o) {
if(k === 'w+') {
if(o[k] === 0) {
fmt = fmt.replace('w', '周日');
}else if(o