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与DropDownList 区别分析
Jan 01 Javascript
js实现的仿新浪微博完美的时间组件升级版
Dec 20 Javascript
jQuery .tmpl() 用法示例介绍
Aug 21 Javascript
微信支付如何实现内置浏览器的H5页面支付
Sep 25 Javascript
Angular.js回顾ng-app和ng-model使用技巧
Apr 26 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
May 24 Javascript
静态页面html中跳转传值的JS处理技巧
Jun 22 Javascript
Vue.js组件tree实现无限级树形菜单
Dec 02 Javascript
js实现自动图片轮播代码
Mar 22 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
Nov 20 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
Nov 06 Javascript
JS中箭头函数与this的写法和理解
Jan 14 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
介绍几个array库的新函数 php
2006/12/29 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
JS无限树状列表实现代码
2011/01/11 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
2018/05/10 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
Laravel admin实现消息提醒、播放音频功能
2019/07/10 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
vue实现评论列表功能
2019/10/25 Javascript
Vue分页效果与购物车功能
2019/12/13 Javascript
python threading模块操作多线程介绍
2015/04/08 Python
Python实现字典依据value排序
2016/02/24 Python
python实现扫描日志关键字的示例
2018/04/28 Python
python如果快速判断数字奇数偶数
2019/11/13 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
智利最大的网上商店:Linio智利
2016/11/24 全球购物
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
Python是如何进行类型转换的
2013/06/09 面试题
建筑行业的大学生自我评价
2013/12/08 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
英文请假条
2014/04/11 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
服务员态度差检讨书
2014/10/28 职场文书
大连星海广场导游词
2015/02/10 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
小平小道观后感
2015/06/09 职场文书
2016教师节问候语
2015/11/10 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL