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 相关文章推荐
JavaScript 学习笔记(十五)
Jan 28 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
Aug 01 Javascript
document.compatMode的CSS1compat使用介绍
Apr 03 Javascript
avalonjs实现仿微博的图片拖动特效
May 06 Javascript
深入学习JavaScript对象
Oct 13 Javascript
原生js仿jquery实现对Ajax的封装
Oct 04 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
Oct 27 Javascript
完美解决IE不支持Data.parse()的问题
Nov 24 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
Dec 28 Javascript
浅谈JS验证表单文本域输入空格的问题
Feb 14 Javascript
JavaScript制作3D旋转相册
Aug 02 Javascript
antd配置config-overrides.js文件的操作
Oct 31 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 fread()使用技巧
2010/01/22 PHP
PHP中文分词的简单实现代码分享
2011/07/17 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
php计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
兼容FireFox 的 js 日历 支持时间的获取
2009/03/04 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
javascript解析json实例详解
2014/11/05 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
原生JS查找元素的方法(推荐)
2016/11/22 Javascript
原生js编写2048小游戏
2017/03/17 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
python实现决策树
2017/12/21 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
Python字典实现伪切片功能
2020/10/28 Python
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
金鑫耀Java笔试题
2014/09/06 面试题
写自荐信的七个技巧
2013/10/15 职场文书
婚礼证婚人证婚词
2014/01/08 职场文书
蜜蜂引路教学反思
2014/02/04 职场文书
采购经理岗位职责
2014/02/16 职场文书
大课间体育活动方案
2014/03/12 职场文书
应届大专生自荐书
2014/06/16 职场文书
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python