Vue filter 过滤器使用详解

news/2024/7/9 23:48:33 标签: filter, vue, 过滤器

在Vue中当我们想要对一个数值进行处理时(改变格式、大小,类型,过滤等)可以使用filter

Vue过滤器有两种注册方式,全局、或者是局部注册

在一个组件内部想要使用一个不太常用的过滤器,可以局部注册

局部注册过滤器可以直接在组件的选项中定义


export default {
    name: 'FilterDemo',
    /* 局部过滤器 */
    filters: {
      /* 格式化时间戳 */
      formatDate (val) {
        const date = new Date(val);
        const year = date.getFullYear();
        const month = date.getMonth() > 9 ? date.getMonth() + 1 : `0${date.getMonth() + 1}`;
        const day = date.getDate() > 9 ? date.getDate() + 1 : `0${date.getDate() + 1}`;
        return `${year}-${month}-${day}`;
        console.log(val);
      }
    },
    data () {
      return {
 
      }
    }
    
  }

如果是通用型的过滤器可以考虑全局注册,全局注册过滤器应该在创建 Vue 实例之前全局定义过滤器,可以在main.js中


import Vue from 'vue';
Vue.filter('formatTime', function (val) {
  const date = new Date(val);
  const hour = date.getHours();
  const minutes = date.getMinutes();
  const seconds = date.getSeconds();
  return `${hour} : ${minutes} : ${seconds}`;
});

当项目中多次需要使用过滤器时,可以新建filter文件,用以创建项目所需的过滤器

// 像这样
export function toThousandslsFilter(num) {
  return (+num || 0).toString().replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
}

export function dateFilter(num) {
  // 日期格式转换
}

export function lowerFilter(num) {
    // 大小写转换
}

// ...

// 可以将项目经常需要用到的过滤器全部定义在此

然后再main.js中全局注册,可以这样写

import * as filters from './filters' // global filters

// register global utility filters.
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
})

注册完之后就是调用

过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示:

<!-- 在双花括号中 -->
{{ message | capitalize }}

<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>


// 用户从input输入的数据在回传到model之前也可以先处理
 <input type="text" v-model="message | change">

Vue.filter("change", {
   read: function (value) { // model -> view 在更新 `<input>` 元素之前格式化值
        return value;
   },
   write: function (newVal,oldVal) { // view -> model  在写回数据之前格式化值
        console.log("newVal:"+newVal); 
        console.log("oldVal:"+oldVal);
        return newVal;
   }
});

 


http://www.niftyadmin.cn/n/509280.html

相关文章

elementUI form表单验证规则使用详解

elementUi提供了form表单自带有表单验证规则&#xff0c;这里简单介绍下 比较简单的表单验证可以直接使用form自带的&#xff0c;ele定义的验证规则为rules数组&#xff0c;在使用elementU表单验证时可以向其传入约定的验证规则数组&#xff0c;并将 Form-Item 的prop属性设置…

ElementUI BootStrap table 自定义序号

ElementnUI table 自定义序号 elementUI table组件自带序号这样写&#xff1a; <el-table-column align"center" type"index" width"50" label"序号" fixed"left"></el-table-column> 分页符像这样 <el-…

elementUI 时间选择器常用配置详解

elementUI提供了时间选择器等组件&#xff0c;使得我们可以快速的搭建项目&#xff0c;完成相关功能&#xff0c;说下时间选择器的常用配置项 常用配置可以参考elementUI官网查看&#xff0c;包括选择日&#xff0c;周&#xff0c;月&#xff0c;年&#xff0c;多个日期&#…

Vue keep-alive数据缓存与activated、deactivated钩子

keep-alive是Vue的内置组件&#xff0c;可以将状态保留在内存中&#xff0c;防止组件切换过程中重复渲染DOM <keep-alive> 包裹动态组件时&#xff0c;会缓存不活动的组件实例&#xff0c;而不是销毁它们。和 <transition> 相似&#xff0c;<keep-alive> 是一…

点击按钮重复发送请求(节流) 及 input模糊查询重复请求接口问题(防抖)

点击按钮重复发送请求&#xff1a;(节流) 项目中点击创建、编辑、删除等按钮都会发送http请求&#xff0c;网络卡顿的情况下点击按钮之后不能快速的响应&#xff0c;一般情况下用户会重复点击按钮&#xff0c;所以会造成重复发送请求问题&#xff0c;一定量造成卡顿延迟问题。…

视频,图片的websocket请求(h5 video)

之前有写过关于websocket的文章&#xff0c;都是一些粗略的理解&#xff0c;感兴趣可以看看&#xff0c;Vue WebSocket&#xff0c; websocekt 应用案例 这次围绕的主题是websocket视频请求&#xff0c;展示&#xff0c;先分析一下需求 要求点击获取证据按钮&#xff0c;发送…

vue 封装 Axios详解

Axios 是一个基于 promise 的 HTTP 库&#xff0c;可以用在浏览器和 node.js 中。 vue接口数据请求一般都使用的axios&#xff0c;先来看一下axios的部分常用配置项&#xff1a; // url 是用于请求的服务器 URLurl: /user,// method 是创建请求时使用的方法method: get, // de…

vue 用户登陆 和 退出登陆

首页登陆事件一般有两种&#xff0c;点击登陆(click)和回车事件(keyup)&#xff0c;触发的是同一个事件&#xff0c;上代码&#xff1a; // 如下是登陆页form表单部分代码 <el-form :model"loginForm" class"login-form" :rules"loginRules"…