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代码必备[js多浏览器兼容写法]
Oct 29 Javascript
简单通用的JS滑动门代码
Dec 19 Javascript
jQuery autocomplete插件修改
Apr 17 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
May 13 Javascript
js的Boolean对象初始值示例
Mar 04 Javascript
动态显示可输入的字数提示还可以输入的字数
Apr 01 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
May 25 Javascript
node-http-proxy修改响应结果实例代码
Jun 06 Javascript
JavaScript数据存储 Cookie篇
Jul 02 Javascript
浅谈JavaScript 代码简洁之道
Jan 09 Javascript
vue实现跨域的方法分析
May 21 Javascript
JS变量提升原理与用法实例浅析
May 22 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的计数器程序
2006/10/09 PHP
详谈PHP文件目录基础操作
2014/11/11 PHP
老生常谈PHP位运算的用途
2017/03/12 PHP
页面中iframe相互传值传参
2009/12/13 Javascript
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
url地址自动加#号问题说明
2010/08/21 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
ExtJS4中使用mixins实现多继承示例
2013/12/03 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
初识NodeJS服务端开发入门(Express+MySQL)
2017/04/07 NodeJs
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
[00:56]跨越时空加入战场 全新祈求者身心“失落奇艺侍祭”展示
2019/07/20 DOTA
详解Python中列表和元祖的使用方法
2015/04/25 Python
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
python的sorted用法详解
2019/06/25 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
python生成requirements.txt的两种方法
2019/09/18 Python
关于多元线性回归分析——Python&amp;SPSS
2020/02/24 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
2020/07/02 Python
《植物妈妈有办法》教学反思
2014/02/25 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
无犯罪记录证明
2014/09/19 职场文书
2014年财务工作自我评价
2014/09/23 职场文书
婚礼答谢礼品
2015/01/20 职场文书
灵能百分百第三季什么时候来?
2022/03/15 日漫
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang