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 相关文章推荐
基于jquery的checkbox下拉框插件代码
Jun 25 Javascript
jQuery提交多个表单的小技巧
Jul 27 Javascript
jQuery层动画定位滑动效果的方法
Apr 30 Javascript
详解js中class的多种函数封装方法
Jan 03 Javascript
原生JavaScript制作微博发布面板效果
Mar 11 Javascript
AngularJS基础 ng-focus 指令简单示例
Aug 01 Javascript
手机软键盘弹出时影响布局的解决方法
Dec 15 Javascript
JS中Array数组学习总结
Jan 18 Javascript
Node.js 实现简单的接口服务器的实例代码
May 23 Javascript
jQuery实现简单的计时器功能实例分析
Aug 29 jQuery
基于node搭建服务器,写接口,调接口,跨域的实例
May 13 Javascript
vue全局使用axios的方法实例详解
Nov 22 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
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
新页面打开实际尺寸的图片
2006/08/25 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
js将json格式的对象拼接成复杂的url参数方法
2016/05/25 Javascript
JavaScript DOM 对象深入了解
2016/07/20 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
2020/11/24 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
微信小程序使用npm支持踩坑
2018/11/07 Javascript
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
React实现轮播效果
2020/08/25 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
iview实现动态表单和自定义验证时间段重叠
2021/01/10 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
Python中import导入上一级目录模块及循环import问题的解决
2016/06/04 Python
Python制作钉钉加密/解密工具
2016/12/07 Python
总结python中pass的作用
2019/02/27 Python
基于pandas中expand的作用详解
2019/12/17 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
python 调用Google翻译接口的方法
2020/12/09 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
pandas 按日期范围筛选数据的实现
2021/02/20 Python
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
澳大利高级泳装品牌:Bondi Born
2018/05/23 全球购物
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
策划创业计划书
2014/02/06 职场文书
质量月口号
2014/06/20 职场文书
银行求职自荐书
2014/06/25 职场文书
学风建设演讲稿
2014/09/12 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
工程款催款函
2015/06/24 职场文书