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的并行运算实现代码
Nov 19 Javascript
查看大图功能代码jquery版
Nov 05 Javascript
bootstrap table 服务器端分页例子分享
Feb 10 Javascript
JavaScript中property和attribute的区别详细介绍
Mar 03 Javascript
JavaScript列表框listbox全选和反选的实现方法
Mar 18 Javascript
jquery调整表格行tr上下顺序实例讲解
Jan 09 Javascript
浅析Javascript ES6新增值比较函数Object.is
Aug 24 Javascript
完美实现js拖拽效果 return false用法详解
Jul 28 Javascript
简单了解Ajax表单序列化的实现方法
Jun 14 Javascript
Node.js API详解之 string_decoder用法实例分析
Apr 29 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
May 30 jQuery
微信小程序多列表渲染数据开关互不影响的实现
Jun 05 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判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
php经典算法集锦
2015/11/14 PHP
thinkphp自带验证码全面解析
2016/09/18 PHP
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
Vue渲染函数详解
2017/09/15 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
小程序实现上下切换位置
2020/11/16 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
[03:43]2014DOTA2西雅图国际邀请赛 newbee战队巡礼
2014/07/07 DOTA
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
大学生个人推荐信范文
2013/11/25 职场文书
春节晚会主持词
2014/03/24 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
优秀党员先进材料
2014/12/18 职场文书
校园安全主题班会
2015/08/12 职场文书
诚信考试主题班会
2015/08/17 职场文书
环保建议书作文300字
2015/09/14 职场文书
2019年恭贺升学祝福语集锦
2019/08/15 职场文书
pandas数值排序的实现实例
2021/07/25 Python
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS