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 相关文章推荐
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
Dec 14 Javascript
javascript相关事件的几个概念
May 21 Javascript
js实现点击切换TAB标签实例
Aug 21 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
Oct 22 Javascript
JQueryEasyUI之DataGrid数据显示
Nov 23 Javascript
基于JavaScript实现右键菜单和拖拽功能
Nov 28 Javascript
原生js编写基于面向对象的分页组件
Dec 05 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
Feb 27 Javascript
利用js给datalist或select动态添加option选项的方法
Jan 25 Javascript
解决vue-router在同一个路由下切换,取不到变化的路由参数问题
Sep 01 Javascript
js抽奖转盘实现方法分析
May 16 Javascript
vant picker+popup 自定义三级联动案例
Nov 04 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实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
php检索或者复制远程文件的方法
2015/03/13 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
微信支付开发维权通知实例
2016/07/12 PHP
PHP中利用sleep函数实现定时执行功能实现代码
2016/08/25 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
js禁止页面刷新禁止用F5键刷新禁止右键的示例代码
2013/09/23 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
基于JavaScript实现的折半查找算法示例
2017/04/14 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
python实现海螺图片的方法示例
2019/05/12 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
Python爬虫抓取指定网页图片代码实例
2020/07/24 Python
python Paramiko使用示例
2020/09/21 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
十八届三中全会宣传方案
2014/02/21 职场文书
工程师岗位职责规定
2014/02/26 职场文书
亮化工程实施方案
2014/03/17 职场文书
申报优秀教师材料
2014/12/16 职场文书
2015年安康杯竞赛活动总结
2015/03/26 职场文书
消防宣传语大全
2015/07/13 职场文书
求职信:求职应该注意的问题
2019/04/24 职场文书
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL
Django框架中视图的用法
2022/06/10 Python