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 相关文章推荐
js播放wav文件(源码)
Apr 22 Javascript
JS按回车键实现登录的方法
Aug 25 Javascript
20条学习javascript的编程规范的建议
Nov 28 Javascript
Vue2实现组件props双向绑定
Dec 02 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
Feb 22 Javascript
es6学习笔记之Async函数基本教程
May 11 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
Jul 13 Javascript
angular4笔记系列之内置指令小结
Nov 09 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
Nov 12 jQuery
微信小程序实现点击图片旋转180度并且弹出下拉列表
Nov 27 Javascript
vue中uni-app 实现小程序登录注册功能
Oct 12 Javascript
vue2路由基本用法实例分析
Mar 06 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
php 获取完整url地址
2008/12/20 PHP
来自phpguru得Php Cache类源码
2010/04/15 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
php实现图片上传时添加文字和图片水印技巧
2020/04/18 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
发现的以前不知道的函数
2006/09/19 Javascript
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
Layui table field初始化加载时进行隐藏的方法
2019/09/19 Javascript
JavaScript实现简单动态表格
2020/12/02 Javascript
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
python从入门到精通(DAY 2)
2015/12/20 Python
python字符串string的内置方法实例详解
2018/05/14 Python
Django基础三之视图函数的使用方法
2019/07/18 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
Python netmiko模块的使用
2020/02/14 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
Python中flatten( ),matrix.A用法说明
2020/07/05 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
简单介绍Object类的功能、常用方法
2013/10/02 面试题
医学生自我鉴定范文
2013/11/08 职场文书
大学生作弊检讨书
2014/02/19 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
杨善洲电影观后感
2015/06/04 职场文书
海洋天堂观后感
2015/06/05 职场文书
春节随笔
2015/08/15 职场文书
品德与社会教学反思
2016/02/24 职场文书