vue.js中过滤器的使用教程


Posted in Javascript onJune 08, 2017

前言

大家再使用vue做项目时,查询功能当然必不可少,这就得使用vue强大的filter啦。其实vue内置的两个属性filterBy和orderBy已经能满足部分需求了,但是她更大的的魅力在于自定义filter(之后的文章中会分享),正好我最近做的项目中用到了这个。先给大家看下需求吧。如下图,这是一个通讯录页面,当我们在搜索栏中输入关键字时需要展示相应的员工,同时还得去掉A、B这样的字母索引,并且输入的关键字可以是中文也可以是拼音。

vue.js中过滤器的使用教程   vue.js中过滤器的使用教程

该页面引入搜索栏组件search-bar以及联系人组件user-list,这个搜索栏组件要做的事很简单,因为我们查询的这个参数是动态的,所以只需要在vue上挂载一个v-model即可,然后它相对于这个页面来说是子组件,父子传值就得用props,所以还要用props接收一下,简单写下该组件大家看明白意思即可。

// 组件search-bar
<input type="search" v-model="okr_owner"/>

props: {
 okr_owner: {
  type: String
 }
}
// 通讯录页面
<template>
 <search-bar :okr_owner.sync="key_word"></search-bar>
 <user-list :filter_key="key_word"></user-list>
</template>
// 组件 user-list
<li v-for="single_user in user_list.members | filterBy filter_key in 'user.u_name' 'okr_owner' | orderBy 'okr_owner'">
 props: {
 filter_flag: {
  type: Boolean
 },
 filter_key:{
  type: String
 }
}

然后我们需要在该页面引入这个搜索栏子组件,这里我用到了sync,因为props只能父传子,不能子传父,但是我们这上面引用了两个组件,就是说搜索栏组件中的data要拿到联系人组件中来用,所以需要一个字段(key_word)将两者沟通起来,当我们不写sync时大家可以看到,父的确传值给子组件了,但是子组件中的okr_owner变化之后并没有传给父组件中的key_word,这样联系人组件就接受不到数据源,所以我们需要给他加上sync(双向绑定,父传子和子传父),联系人组件中的filter才可以生效。

vue.js中过滤器的使用教程

vue.js中过滤器的使用教程

在user-list组件中我们需要遍历联系人列表,filter_key用来传给该组件,和搜索栏组件一样,也用props接收一下,并且在里面插入要过滤的内容,

filterBy是返回过滤后的数组,orderBy是排序,前者的使用方法是filterBy 一个key(字段),in xxx 就是指搜索字段,这里需要注意的是in后面跟的必须是obj里面的key,因为我们的需求是同时保证输入汉字或者拼音都能查询,所以in后面跟的是okr_owner和user.u_name(这是vue渲染的数据,我们展示该联系人用的是里面的u_name,okr_owner则为拼音),下面附上数据结构。对于在搜索时如何去掉这些字母索引,我们只需要在通讯录页面中的<user-list>加入一个字段,然后使用watch来监听一下key_word即可。

vue.js中过滤器的使用教程

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript中的有名函数和无名函数
Oct 17 Javascript
My Desktop :) 桌面式代码
Dec 29 Javascript
jQuery $.data()方法使用注意细节
Dec 31 Javascript
js实现俄罗斯方块小游戏分享
Jan 31 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
Mar 20 Javascript
详解AngularJS中module模块的导入导出
Dec 10 Javascript
自动化测试读写64位操作系统的注册表
Aug 15 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
Oct 14 Javascript
vue bus全局事件中心简单Demo详解
Feb 26 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
Nov 14 Javascript
微信小程序的tab选项卡的实现效果
May 15 Javascript
js+springMVC 提交数组数据到后台的实例
Sep 21 Javascript
了解VUE的render函数的使用
Jun 08 #Javascript
Node.js 使用命令行工具检查更新
Jun 08 #Javascript
在vue.js中抽出公共代码的方法示例
Jun 08 #Javascript
Ionic3 UI组件之autocomplete详解
Jun 08 #Javascript
jQuery+ajax实现局部刷新的两种方法
Jun 08 #jQuery
gulp解决跨域的配置文件问题
Jun 08 #Javascript
angular 用拦截器统一处理http请求和响应的方法
Jun 08 #Javascript
You might like
php array_map()数组函数使用说明
2011/07/12 PHP
php 保留字列表
2012/10/04 PHP
php通过递归方式复制目录和子目录的方法
2015/03/13 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
js AspxButton的客户端操作
2009/06/26 Javascript
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
Python爬虫运用正则表达式的方法和优缺点
2019/08/25 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
详解html5 canvas 微信海报分享(个人爬坑)
2018/01/12 HTML / CSS
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
会计岗位职责
2013/11/08 职场文书
跑操口号
2014/06/12 职场文书
如何写观后感
2015/06/19 职场文书
奠基仪式致辞
2015/07/30 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
HTML5之高度塌陷问题的解决
2022/06/01 HTML / CSS