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 相关文章推荐
语义化 H1 标签
Jan 14 Javascript
js 操作select相关方法函数
Dec 06 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
Apr 15 Javascript
jquery通过visible来判断标签是否显示或隐藏
May 08 Javascript
json中换行符的处理方法示例介绍
Jun 10 Javascript
原生js编写基于面向对象的分页组件
Dec 05 Javascript
使用Dropzone.js上传的示例代码
Oct 10 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
Sep 29 Javascript
jsonp跨域获取百度联想词的方法分析
May 13 Javascript
详解搭建一个vue-cli的移动端H5开发模板
Jan 17 Javascript
js get和post请求实现代码解析
Feb 06 Javascript
详解微信小程序动画Animation执行过程
Sep 23 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
Windows下的PHP5.0详解
2006/11/18 PHP
PHP中调用SVN命令更新网站方法
2015/01/07 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
PHP中如何使用Redis接管文件存储Session详解
2018/11/28 PHP
用javascript模仿ie的自动完成类似自动完成功的表单
2012/12/12 Javascript
jquery 获取标签名(tagName)示例代码
2013/07/11 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
2019/06/06 jQuery
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
python计数排序和基数排序算法实例
2014/04/25 Python
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
python批量赋值操作实例
2018/10/22 Python
Python内置加密模块用法解析
2019/11/25 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
五种Python转义表示法
2020/11/27 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
韩国现代百货官网:Hmall
2018/03/21 全球购物
化学实验员岗位职责
2013/12/28 职场文书
超市创意活动方案
2014/08/15 职场文书
2014年医院十一国庆节活动方案
2014/09/15 职场文书
我们的节日中秋节活动总结
2015/03/23 职场文书
免职通知
2015/04/23 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
Java数据结构之链表相关知识总结
2021/06/18 Java/Android
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis