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 相关文章推荐
多个$(document).ready()的执行顺序实例分析
Jul 26 Javascript
AngularJS学习笔记之TodoMVC的分析
Feb 22 Javascript
JavaScript的面向对象编程基础
Aug 13 Javascript
jQuery Mobile框架中的表单组件基础使用教程
May 17 Javascript
js微信分享API
Oct 11 Javascript
AngularJS入门示例之Hello World详解
Jan 04 Javascript
vue实现简单实时汇率计算功能
Jan 15 Javascript
JavaScrpt的面向对象全面解析
May 09 Javascript
微信小程序图片自适应支持多图实例详解
Jun 21 Javascript
vue脚手架搭建项目的兼容性配置详解
Jul 17 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
May 16 Javascript
Vue页面刷新记住页面状态的实现
Dec 27 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数据浏览器
2007/03/11 PHP
那些年一起学习的PHP(三)
2012/03/22 PHP
PDO::rollBack讲解
2019/01/29 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
css配合jquery美化 select
2013/11/29 Javascript
JS比较2个日期间隔的示例代码
2014/04/15 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
详细解析Python中的变量的数据类型
2015/05/13 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
Python中几种导入模块的方式总结
2017/04/27 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
CSS3 圆角效果
2009/07/15 HTML / CSS
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
what is the difference between ext2 and ext3
2013/11/03 面试题
机械电子工程专业推荐信范文
2013/11/20 职场文书
酒店副总岗位职责
2013/12/24 职场文书
毕业自我鉴定书
2014/03/24 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
结婚保证书(卖身契)
2015/02/26 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript