vue 项目中 自定义过滤器 全局使用 filter

新建filter文件

src目录下新建filters目录,filters目录里新建index.js文件

exports.formatMoney = (value) => {
  if (value) {
    value = Number(value);
    return '¥ ' + value.toFixed(2);
  }
};

exports.statusName = (val) => {
  let statusName = '';
  switch (val) {
    case 0: {
      statusName = '已取消';
      break;
    }
    case 10: {
      statusName = '未付款';
      break;
    }
    case 20: {
      statusName = '已付款';
      break;
    }
  }
  return statusName;
};

main.js里注册filter

import filters from './filters';
Object.keys(filters).forEach(k => Vue.filter(k, filters[k]));

注册filter后main如下

import Vue from 'vue'
import App from './App'
import router from './router'
import Mixin from './mixins';
import filters from './filters';
Vue.mixin(Mixin);

Vue.config.productionTip = false
Object.keys(filters).forEach(k => Vue.filter(k, filters[k]));

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})

使用

<template>
  <div>
    <p>这是index页面</p>
    <p @click="loadPage('Index')">Index</p>
    <p @click="loadPage('About')">About</p>
    <p @click="loadPage('Product')">Product</p>
    <div>
      价格:{{price|formatMoney}}
    </div>
    <div>
      订单状态:{{orderStatus | statusName}}
    </div>
  </div>
</template>
<script>
  export default{
    data(){
      return{
        price:95,
        orderStatus:10
      }
    }
  }
</script>
<style>

</style>

页面展示结果

这是index页面
Index
About
Product

价格:¥ 95.00
订单状态:未付款

猜你喜欢

转载自blog.csdn.net/qq_35285627/article/details/80805705