Vue的filter

328 阅读2分钟
1.1 在组件里写filter

在组件里面写filter:

<span>{{ accNo | filterFun }} </span>
<script>
    export default {
        filters: {
            // 截取值的最后4位
            filterFun: function (value){
                return value.substring(value.length - 4);
            }
        }
    }
</script>
1.2 全局filter

src目录下,建立filters目录,里面新建 index.js

src/filters/index.js :

/**
 * 价格小数点格式化
 * 数字四舍五入保留两位小数点
 * @param {sum} Number
 * /
export function formatAmountFixed2(sum) {
    return sum == null ? null : ((+sum / 100).toFixed(2));
} 

main.js中引入:

// global filters
import Vue from 'vue';
import * as filters from '@/filters';

Object.keys(filters).forEach((key) => {
    Vue.filter(key, filters[key]);
});

然后页面中就可以使用了:

<div>{{ num | formatAmountFixed2 }}</div>
<script>
data(){
    return {
        num: 11111
    }
}
</script>
1.3 其他封装为全局的方法

写项目的时候,有一些方法我们是需要全局使用的,比如数字的四舍五入保留小数点,一些工具方法,字符的格式化等等。这些很多页面需要用的,使用频率极高的方法。我们一般会将其封装为全局的方法。有这么几种方式:

1.3.1 挂载到vue.prototype

main.js入口文件中挂载到vue.prototype,比如我们封装一个获取时间戳的函数。

Vue.prototype.now = Date.now || function () {
    return new Date().getTime();
};

然后就可以在.vue组件中使用了:

<script>
    export default {
        mounted(){
            console.log('now:', this.now());
        },
    }
</script>
1.3.2 全局混入mixins

同样也还是在 main.js中。

mixins的全局注入规则大家应该都懂,如果组件中没有这个getTime方法,那么就会在页面中注入这个方法。

Vue.mixin({
    data(){
        
    },
    methods:{
        getTime() {
            return new Date().getTime();
        }
    }
});

关于全局混入mixins。

mixins就是定义一部分公共的方法或者计算属性,然后混入到各个组件中使用,方便管理与统一修改。

例子1: (1) 定义一个mixin.js

export const mixinTest1 = {
    created(){
        this.hello();
    },
    methods: {
        hello(){
            console.log('mixinTest1');
        }
    }
};

(2) 组件引入

import { mixinTest1 } from './../assets/js/mixin';
export default {
    mixins: [mixinTest1],
    name: 'hello',
    data () {
        return {
            msg: 'this is a msg'
        }
    }
}

这样就可以直接调用到混入对象中的hello方法