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 相关文章推荐
JavaScript 异步调用框架 (Part 1 - 问题 &amp; 场景)
Aug 03 Javascript
图像替换新技术 状态域方法
Jan 28 Javascript
Javascript 通过json自动生成Dom的代码
Apr 01 Javascript
禁止页面刷新让F5快捷键及右键都无效
Jan 22 Javascript
JS简单实现动画弹出层效果
May 05 Javascript
javascript实现的多个层切换效果通用函数实例
Jul 06 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
Feb 14 Javascript
深入浅析JavaScript中的scrollTop
Jul 11 Javascript
基于js对象,操作属性、方法详解
Aug 11 Javascript
js事件委托和事件代理案例分享
Jul 25 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
Jan 12 Javascript
JavaScript实现网页计算器功能
Oct 29 Javascript
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字符串处理的10个简单方法
2010/06/30 PHP
php header示例代码(推荐)
2010/09/08 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
jQuery+JSON实现AJAX二级联动实例分析
2015/12/18 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
2018/03/03 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python解析json文件相关知识学习
2016/03/01 Python
Python+微信接口实现运维报警
2016/08/27 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
详解Python异常处理中的Finally else的功能
2017/12/29 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
Django中的Model操作表的实现
2018/07/24 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
对Python w和w+权限的区别详解
2019/01/23 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
火锅店创业计划书范文
2014/02/02 职场文书
献爱心活动总结
2014/05/07 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
青年文明号申报材料
2014/12/23 职场文书
教师学期个人总结
2015/02/11 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang