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可突破windows弹退效果代码
Aug 09 Javascript
javascript document.compatMode兼容性
Feb 23 Javascript
js两行代码按指定格式输出日期时间
Oct 21 Javascript
jQuery 获取兄弟元素的几种不错方法
May 23 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
Jun 09 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
Apr 13 Javascript
Javascript中的async awai的用法
May 17 Javascript
echart简介_动力节点Java学院整理
Aug 11 Javascript
Node.js使用MySQL连接池的方法实例
Feb 11 Javascript
Node.js动手撸一个静态资源服务器的方法
Mar 09 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
Jun 17 Javascript
vscode中使用npm安装babel的方法
Aug 02 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
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
PHP 函数执行效率的小比较
2010/10/17 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
PHP的自定义模板引擎
2017/03/24 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
PHP7新特性
2021/03/09 PHP
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
JS定时关闭窗口的实例
2013/05/22 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
使用vue.js制作分页组件
2016/06/27 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
JS表单数据验证的正则表达式(常用)
2017/02/18 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
ES6新特性:使用export和import实现模块化详解
2017/07/31 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
[01:35]辉夜杯战队访谈宣传片—LGD
2015/12/25 DOTA
Python实现配置文件备份的方法
2015/07/30 Python
Python中将字典转换为列表的方法
2016/09/21 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
Python读取YUV文件,并显示的方法
2018/12/04 Python
艺术爱好者的自我评价分享
2013/10/08 职场文书
卫校毕业生自我鉴定
2013/10/31 职场文书
大学军训感言300字
2014/03/09 职场文书
质量承诺书范文
2014/03/27 职场文书
超市店庆活动方案
2014/08/31 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android
浅析python中特殊文件和特殊函数
2022/02/24 Python
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python