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.findElementById()使用介绍
Sep 21 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
Nov 25 Javascript
Jquery选择器中使用变量实现动态选择例子
Jul 25 Javascript
Node.js事件循环(Event Loop)和线程池详解
Jan 28 Javascript
PHP结合jQuery实现的评论顶、踩功能
Jul 22 Javascript
JavaScript实现图片轮播的方法
Jul 31 Javascript
关于vue.js弹窗组件的知识点总结
Sep 11 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
Oct 25 Javascript
深入理解Vue transition源码分析
Jul 30 Javascript
简述vue状态管理模式之vuex
Aug 29 Javascript
vue 如何使用递归组件
Oct 23 Javascript
Element-UI 使用el-row 分栏布局的教程
Oct 26 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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
浅谈php优化需要注意的地方
2014/11/27 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
JavaScript动态创建div属性和样式示例代码
2013/10/09 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
fullCalendar中文API官方文档
2017/02/07 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
JavaScript递归算法生成树形菜单
2017/08/15 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
骨干教师培训感言
2014/01/16 职场文书
保护动物倡议书
2014/04/15 职场文书
单位消防安全责任书
2014/07/23 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
实习证明模板
2015/06/16 职场文书
学校扫黄打非工作总结
2015/10/15 职场文书
比较几种Redis集群方案
2021/06/21 Redis
如何用六步教会你使用python爬虫爬取数据
2022/04/06 Python