vue 中filter的多种用法


Posted in Javascript onApril 26, 2018

1、自定义的过滤器,当然这包括注册在全局和注册在实例化的内部

(1)注册在全局的fliter

(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>

filter是默认会传入当前的item,而且filter的第一个参数默认就是当前的item。

(2)注册在实例化内部

上面的例子直接注册在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>

2、使用js中的迭代函数filter

vue 中filter的多种用法 

(1)实例一原文

var app5 = new Vue({
  el: '#app5',
  data: {
    shoppingList: [
      "Milk", "Donuts", "Cookies", "Chocolate", "Peanut Butter", "Pepto Bismol", "Pepto Bismol (Chocolate flavor)", "Pepto Bismol (Cookie flavor)"
    ],
    key: ""
  },
  computed: {
    filterShoppingList: function () {
      // `this` points to the vm instance
      var key = this.key;
      var shoppingList = this.shoppingList;
      //在使用filter时需要注意的是,前面调用的是需要使用filter的数组,而给filter函数传入的是数组中的每个item,也就是说filter里面的函数,是每个item要去做的,并将每个结果返回。
      return shoppingList.filter(function (item) {
        return item.toLowerCase().indexOf(key.toLowerCase()) != -1
      });;
    }
  }
})

 <ul>
  Filter Key<input type="text" v-model="key">  
    <li v-for="item in filterShoppingList">
      {{ item }}
    </li>
  </ul>

最终效果实现了根据关键字来过滤列表的功能。

vue 中filter的多种用法 

 其他的一些Js 迭代方法——filter()、map()、some()、every()、forEach()、lastIndexOf()、indexOf()

总结

以上所述是小编给大家介绍的vue 中filter的多种用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery append()方法与html()方法的区别及使用介绍
Aug 01 Javascript
简易的投票系统以及js刷票思路和方法
Apr 07 Javascript
css如何让浮动元素水平居中
Aug 07 Javascript
jQuery+PHP星级评分实现方法
Oct 02 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
Dec 10 Javascript
浅谈js script标签中的预解析
Dec 30 Javascript
javascript ES6中箭头函数注意细节小结
Feb 17 Javascript
Angular.js自动化测试之protractor详解
Jul 07 Javascript
gulp安装以及打包合并的方法教程
Nov 19 Javascript
Vue.js图片预览插件使用详解
Aug 27 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
Dec 11 Javascript
Vue如何将页面导出成PDF文件
Aug 17 Javascript
vue自定义filters过滤器
Apr 26 #Javascript
JavaScript实现微信红包算法及问题解决方法
Apr 26 #Javascript
react 创建单例组件的方法
Apr 26 #Javascript
node打造微信个人号机器人的方法示例
Apr 26 #Javascript
Vue 使用中的小技巧
Apr 26 #Javascript
基于Vue实现拖拽功能
Jul 29 #Javascript
vuex操作state对象的实例代码
Apr 25 #Javascript
You might like
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
Javascript调用C#代码
2011/01/17 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
Seajs源码详解分析
2019/04/02 Javascript
js利用拖放实现添加删除
2020/08/27 Javascript
[59:36]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第二场
2018/04/04 DOTA
python调用windows api锁定计算机示例
2014/04/17 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
基于numpy.random.randn()与rand()的区别详解
2018/04/17 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
FOREO官方网站:LUNA露娜洁面仪
2016/11/28 全球购物
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
斐乐美国官方网站:FILA美国
2019/03/01 全球购物
本科毕业生自我鉴定
2013/11/02 职场文书
搞笑征婚广告词
2014/03/17 职场文书
大学入学感言
2015/08/01 职场文书
2016寒假假期总结
2015/10/10 职场文书
经典《舰娘》游改全新动画预告 预定11月开播
2022/04/01 日漫
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android