IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue.js全局API——filter -> 正文阅读

[JavaScript知识库]Vue.js全局API——filter

情景

将后台存的数字订单状态格式化显示在前端

使用filter

  1. 新建filters文件
    在这里插入图片描述

  2. order.js 写处理订单的filter方法


export default {
  setOrderStatus (status) {
    switch (status) {
      case 1:
        return '待付款'
        
      case 2:
        return '待发货'
        
      case 3:
        return '待收货'
        
      case 4:
        return '待评价'
        
      default:
        return '未获取到状态'   
    }
  },
  setStatusStyle (status) {
    if (status === '未获取到状态') {
      return 'red'
  }
  }
}
  1. index.js 将filter导出
import orders from './orders'
export default {
 ...orders
}
  1. 在main.js中全局注册使用
import filters from '@/plugins/filters'

Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
})
  1. 页面中使用
  <div>
    过滤器使用
    {{ 1 | setOrderStatus}}
     <a-table style="width:100%" :columns="columns" :data-source="tableData" bordered>
      <div slot="status" slot-scope="text" :class="text | setOrderStatus | setStatusStyle">
        {{text | setOrderStatus}}
      </div>
     </a-table>
  </div>
</template>

<script>
import tableData from './table'
// import filterList from '@/filters';
const columns = [
  {
    title: '名称',
    dataIndex: 'name',
    key: 'name',
    scopedSlots: { customRender: 'name' }
  },
  {
    title: '订单',
    dataIndex: 'order',
    key: 'order',
    scopedSlots: { customRender: 'order' }
  },
  {
    title: '价格',
    dataIndex: 'price',
    key: 'price',
    scopedSlots: { customRender: 'price' }
  },
  {
    title: '状态',
    key: 'status',
    dataIndex: 'status',
    scopedSlots: { customRender: 'status' }
  },
  {
    title: '占比',
    dataIndex: 'rote',
    key: 'rote',
    scopedSlots: { customRender: 'rote' }
  },
];
export default {
  name: 'FilterPage',

  data() {
    return {
      columns,
      tableData
    }
  },
  // filters: {
  //  ...filterList
  // },
  mounted() {
    // console.log('filters', filterList)
    
  },

  methods: {
    
  },
};
</script>

<style lang="less" scoped>
.red {
  color: red
}
</style>
  • table.js
export default [
  {
    name: '商品1',
    order: '546645',
    price: 1111,
    status: 1,
    rote: 0.5
  },
  {
    name: '商品1',
    order: '546456',
    price: 4545,
    status: 2,
    rote: 0.6
  },
  {
    name: '商品1',
    order: '4564645',
    price: 1111,
    status: 3,
    rote: 0.3
  },
  {
    name: '商品1',
    order: '6456456',
    price: 1222,
    status: 4,
    rote: 0.2
  },
  {
    name: '商品1',
    order: '45646564',
    price: 4545,
    status: null,
    rote: 0.8
  },
]

效果
在这里插入图片描述

总结

功能

主要用于格式化文本

使用

注册方式

  • 在组件的选项中定义
  • 在创建Vue.js实例之前全局定义(以上Demo)

使用方式

  • 用于双括号插值v-bind表达式(2.1.0+开始),应该被添加在js表达式的尾部,由管道符号指示
  • 可以串联并且接受参数
{{mes | filter(agrs1, agrs2)}}
// mes 会作为第一个参数,agrs1作为第二个,agrs作为第三个 

原理《深入浅出Vue.js》

filters是个对象,自定义的过滤器以名称和函数为键值存于filters

  • 在编译阶段将过滤器编译成函数调用,串联的过滤器编译后是一个嵌套的函数调用,前一个过滤器的执行结果是最后一个过滤器函数的参数
  • 编译后的_f函数是resolveFilter函数的别名,resolveFilter函数的作用是找到对应的过滤器并返回
  • 编译过滤器的过程分两歩:解析resolveFilter
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:07:38  更:2022-06-01 15:08:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/12 9:38:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码