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中几种去掉字串左右空格的方法
Dec 25 Javascript
脚本安需导入(装载)的三种模式的对比
Jun 24 Javascript
js cookies实现简单统计访问次数
Nov 24 Javascript
关于文本框的一些限制控制总结~~
Apr 15 Javascript
jquery 的 $(&quot;#id&quot;).html() 无内容的解决方法
Jun 07 Javascript
javascript getElementsByClassName实现代码
Oct 11 Javascript
用RadioButten或CheckBox实现div的显示与隐藏
Sep 21 Javascript
ExtJS自定义主题(theme)样式详解
Nov 18 Javascript
javascript监听鼠标滚轮事件浅析
Jun 05 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
Mar 16 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
Apr 26 Javascript
微信小程序rich-text富文本用法实例分析
May 20 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获取MySql新增记录ID值的3种方法
2014/06/24 PHP
php读取本地json文件的实例
2018/03/07 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
js常用数组操作方法简明总结
2014/06/20 Javascript
javascript组合使用构造函数模式和原型模式实例
2015/06/04 Javascript
javascript数组去重小结
2016/03/07 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
详解webpack介绍&amp;安装&amp;常用命令
2017/06/29 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
函数式编程入门实践(一)
2019/04/20 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
简单介绍python封装的基本知识
2019/08/10 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
python实现复制文件到指定目录
2019/10/16 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
金融专业个人的自我评价
2013/10/18 职场文书
村级环境卫生整治方案
2014/05/04 职场文书
2014年人事科工作总结
2014/11/19 职场文书
同学会邀请函模板
2015/01/30 职场文书
介绍信模板
2015/01/31 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
Python max函数中key的用法及原理解析
2021/06/26 Python
带你了解Java中的ForkJoin
2022/04/28 Java/Android
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript