vue中的过滤器实例代码详解


Posted in Javascript onJune 06, 2019

过滤器

1.过滤器规则

Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:

双花括号插值{{}}和  v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示:

<!-- 在双花括号中 -->
{{ name | Upper }}
<!-- 在 `v-bind` 中 -->
<div v-bind:id="martin | Upper"></div>

过滤器分为全局过滤器和本地过滤器,全局过滤器顾名思义就是所有Vue实例挂载的元素内都能使用,而本地过滤器则是指只有过滤器函数所在的Vue实例挂载的元素内可以使用

全局过滤器:

Vue.filter('Upper',function (name) {
    return name.toUpperCase();
});

本地过滤器:

var vm=new Vue({
    el: '#app',
    data: {
      name:'martin'
    },
    filters:{
      Upper:function (name) {
        return name.toUpperCase()
      }
    }
  })

2.串联过滤器

{{name | filterA | filterB }}

解释:

第一步:先把name 放到 filterA过滤器中进行过滤

第二步:将第一步过滤器的结果再放到 filterB再进行过滤,显示最终过滤结果

3.过滤器也可以接收参数,因为过滤器说到底只是一个函数

{{ name | filterA('arg1', arg2) }}

解释:

filterA 在这里应该定义为接收三个参数的过滤器函数。其中 name 的值作为第一个参数,字符串 arg1 作为第二个参数,表达式  arg2  的值作为第三个参数。

最后送给大家一个实例:

vue中的过滤器实例代码详解

源代码:

<!DOCTYPE html>
<html lang="en">
<head>  <meta charset="UTF-8">
  <title>Title</title>
  <script src="./bootstrap/js/jquery-1.10.1.js"></script>
  <link rel="stylesheet" href="./bootstrap/css/bootstrap.min.css">
  <script src="./bootstrap/js/bootstrap.min.js"></script>
</head>
<body>
<div id="app">
  <div class="form-inline">
    <label>id:
      <input type="text" class="form-control" placeholder="请输入你的id" v-model="id">
    </label>
    <label>name:
      <input type="text" class="form-control" placeholder="请输入你的name" v-model="name">
    </label>
    <button class="btn btn-success" @click="add">add</button>
    <label>请输入你的搜索关键字:
      <input type="text" class="form-control" placeholder="请输入你的搜索关键字" v-model="keyword">
    </label>
    <button class="btn btn-success" @click="search(keyword)">search</button>
  </div>
  <table class="table table-bordered table-hover table-striped">
    <thead>
    <tr>
      <th>id</th>
      <th>name</th>
      <th>ctime</th>
      <th>operation</th>
    </tr>
    </thead>
    <tbody>
    <tr v-for="(item,i) in search(keyword)" :key="item.id">
      <td>{{item.id}}</td>
      <td>{{item.name}}</td>
      <td>{{item.ctime|dateFormat}}</td>
      <td>
        <a href="#" class="btn btn-success" @click.prevent="">{{item.operation[0]}}</a>
        <a href="#" class="btn btn-success" @click.prevent="del(i)">{{item.operation[1]}}</a>
      </td>
    </tr>
    </tbody>
  </table>

</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
  Vue.filter('dateFormat',function (date) {
    var dy=date.getFullYear();
    var dm=date.getMonth()+1;
    var dd=date.getDate();
    var dh=date.getHours();
    var dm=date.getMinutes();
    var ds=date.getSeconds();
    return `${dy}-${dm}-${dd} ${dh}:${dm}:${ds}`
  });
  var vm=new Vue({
    el: '#app',
    data: {
      keyword:'',
      id:'',
      name:'',
      list:[{id:1,name:'宝马',ctime:new Date(),operation:['add','delete']},
        {id:2,name:'奔驰',ctime:new Date(),operation:['add','delete']},
        {id:3,name:'大众',ctime:new Date(),operation:['add','delete']}
      ]
    },
    methods:{
      add(){
        var curid=this.id;
        var curname=this.name;
        this.list.push({id:curid,name:curname,ctime:new Date(),operation:['add','delete']});
        this.id='';
        this.name='';
      },
      del(i){
        this.list.splice(i,1);
      },
      search(name){
        var arr=[];
        this.list.forEach((item,i)=>{
          if(item.name.indexOf(name)!=-1){
            arr.push(item);
          }
        });
        return arr
      }
    }
  })
</script>
</body>
</html>

总结

以上所述是小编给大家介绍的vue中的过滤器实例代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
基于jquery的关于动态创建DOM元素的问题
Dec 24 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
Jun 08 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
Jun 25 Javascript
JS 添加千分位与去掉千分位的示例
Jul 11 Javascript
jquery实现div阴影效果示例代码
Sep 16 Javascript
Bootstrap基本样式学习笔记之图片(6)
Dec 07 Javascript
详解Python中logging日志模块在多进程环境下的使用
Dec 26 Javascript
JavaScript数据结构之链表的实现
Mar 19 Javascript
AnglarJs中的上拉加载实现代码
Feb 08 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
Dec 05 Javascript
node.js express框架简介与实现
Jul 23 Javascript
jQuery实现异步上传一个或多个文件
Aug 17 jQuery
Vue响应式原理Observer、Dep、Watcher理解
Jun 06 #Javascript
原生js通过一行代码实现简易轮播图
Jun 05 #Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
Jun 05 #Javascript
详解vue父子组件关于模态框状态的绑定方案
Jun 05 #Javascript
JS中实现浅拷贝和深拷贝的代码详解
Jun 05 #Javascript
优雅的处理vue项目异常实战记录
Jun 05 #Javascript
原生JS使用Canvas实现拖拽式绘图功能
Jun 05 #Javascript
You might like
怎样在php中使用PDF文档功能
2006/10/09 PHP
修改apache配置文件去除thinkphp url中的index.php
2014/01/17 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
详细对比php中类继承和接口继承
2018/10/11 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
Javascript中的高阶函数介绍
2015/03/15 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
JQuery select(下拉框)操作方法汇总
2015/04/15 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
深入解读JavaScript中的Hoisting机制
2015/08/12 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
nodejs多版本管理总结
2018/04/03 NodeJs
详解JavaScript中分解数字的三种方法
2021/01/05 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
Python递归遍历列表及输出的实现方法
2015/05/19 Python
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
python调用百度语音识别api
2018/08/30 Python
python写程序统计词频的方法
2019/07/29 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
Django如何实现密码错误报错提醒
2020/09/04 Python
委托公证书范本
2014/04/03 职场文书
寒假家长评语大全
2014/04/16 职场文书
生活部的活动方案
2014/08/19 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
信访维稳承诺书
2015/05/04 职场文书