详解Vue自定义过滤器的实现

发布时间 - 2026-01-10 22:25:30    点击率:

一 自定义过滤器(注册在Vue全局)

注意事项:

(1)全局方法 Vue.filter() 注册一个自定义过滤器,必须放在Vue实例化前面

(2) 过滤器函数始终以表达式的值作为第一个参数。带引号的参数视为字符串,而不带引号的参数按表达式计算

(3)可以设置两个过滤器参数,前提是这两个过滤器处理的不冲突

(4)用户从input输入的数据在回传到model之前也可以先处理

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>vue自定义过滤器</title>
    <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  </head>
  <body>
    <div class="test">
      <p>{{message | sum}}</p>
      <p>{{message | cal 10 20}}</p> <!--过滤器函数始终以表达式的值作为第一个参数。带引号的参数视为字符串,而不带引号的参数按表达式计算。-->
      <p>{{message | sum | currency }}</p> <!--添加两个过滤器,注意不要冲突-->
      
      <input type="text" v-model="message | change"> <!--用户从input输入的数据在回传到model之前也可以先处理-->
      
    </div>
    <script type="text/javascript">
    
//    -----------------------------------------华丽分割线(从model->view)---------------------------------------
      Vue.filter("sum", function(value) {  //全局方法 Vue.filter() 注册一个自定义过滤器,必须放在Vue实例化前面
        return value + 4;
      });
      
      Vue.filter('cal', function (value, begin, xing) {  //全局方法 Vue.filter() 注册一个自定义过滤器,必须放在Vue实例化前面
        return value + begin + xing;
      });

//    -----------------------------------------华丽分割线(从view->model)---------------------------------------
      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;
        }
      });

      var myVue = new Vue({
        el: ".test",
        data: {
          message:12
        }
      });
      
    </script>
  </body>
</html>

二 自定义过滤器(注册在实例化内部)

上面的例子直接注册在Vue全局上面,其他不用这个过滤器的实例也会被迫接受,其实过滤器可以注册在实例内部,仅在使用它的实例里面注册

上面的程序改写为:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>vue自定义过滤器</title>
    <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  </head>
  <body>
    <div class="test">
      <p>{{message | sum}}</p>
      <p>{{message | cal 10 20}}</p> <!--过滤器函数始终以表达式的值作为第一个参数。带引号的参数视为字符串,而不带引号的参数按表达式计算。-->
      <p>{{message | sum | currency }}</p> <!--添加两个过滤器,注意不要冲突-->
      
      <input type="text" v-model="message | change"> <!--用户从input输入的数据在回传到model之前也可以先处理-->
      
    </div>
    <script type="text/javascript">
      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;
        }
      });

      var myVue = new Vue({
        el: ".test",
        data: {
          message:12
        },
        filters: {
          sum: function (value) {
            return value + 4;
          },
          cal: function (value, begin, xing) {
            return value + begin + xing;
          }
        }
      });
      
    </script>
  </body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Vue自定义过滤器  # vue.js  # 自定义过滤器  # vue.js过滤器  # Vue.js每天必学之过滤器与自定义过滤器  # Vue过滤器的用法和自定义过滤器使用  # vue2.0 自定义日期时间过滤器  # vue自定义filters过滤器  # vue自定义过滤器创建和使用方法详解  # vue 过滤器和自定义指令的使用  # vue定义私有过滤器和基本使用  # Vue中过滤器定义以及使用方法实例  # 自定义  # 放在  # 第一个  # 不带  # 回传  # 分割线  # 也会  # 这两个  # 大家多多  # meta  # utf  # charset  # head  # DOCTYPE  # html  # gt 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: iOS UIView常见属性方法小结  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  Linux系统运维自动化项目教程_Ansible批量管理实战  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  使用spring连接及操作mongodb3.0实例  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  简单实现Android文件上传  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  常州企业网站制作公司,全国继续教育网怎么登录?  高防服务器如何保障网站安全无虞?  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Laravel如何记录自定义日志?(Log频道配置)  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  如何在阿里云虚拟服务器快速搭建网站?  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  iOS正则表达式验证手机号、邮箱、身份证号等  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  Laravel怎么在Controller之外的地方验证数据  如何在宝塔面板中创建新站点?  WEB开发之注册页面验证码倒计时代码的实现  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  Laravel如何实现文件上传和存储?(本地与S3配置)  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  Laravel如何为API编写文档_Laravel API文档生成与维护方法  如何在香港服务器上快速搭建免备案网站?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  JavaScript如何实现继承_有哪些常用方法  C#如何调用原生C++ COM对象详解  详解Android——蓝牙技术 带你实现终端间数据传输  怎样使用JSON进行数据交换_它有什么限制  如何用PHP快速搭建CMS系统?  如何在宝塔面板中修改默认建站目录?  如何确保FTP站点访问权限与数据传输安全?  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  Android GridView 滑动条设置一直显示状态(推荐)  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何制作一个表白网站视频,关于勇敢表白的小标题?  如何用美橙互联一键搭建多站合一网站?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  Laravel如何处理异常和错误?(Handler示例)  如何快速重置建站主机并恢复默认配置?