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 相关文章推荐
获取Javscript执行函数名称的方法
Dec 22 Javascript
出现“不能执行已释放的Script代码”错误的原因及解决办法
Aug 29 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
Jun 28 Javascript
jQuery中获取Radio元素值的方法
Jul 02 Javascript
jquery ui dialog实现弹窗特效的思路及代码
Aug 03 Javascript
非常棒的jQuery图片轮播效果
Apr 17 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
May 05 Javascript
vue.js初学入门教程(1)
Nov 03 Javascript
React中ES5与ES6写法的区别总结
Apr 21 Javascript
JavaScript运动框架 多值运动(四)
May 18 Javascript
JavaScript 异步调用
Oct 25 Javascript
element-ui中el-upload多文件一次性上传的实现
Dec 02 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
笑谈配置,使用Smarty技术
2007/01/04 PHP
php一个找二层目录的小东东
2012/08/02 PHP
ThinkPHP模板引擎之导入资源文件方法详解
2014/06/18 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
2017/08/01 PHP
ECMAScript 基础知识
2007/06/29 Javascript
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
2012/10/11 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
web前端设计师们常用的jQuery特效插件汇总
2014/12/07 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
Bootstrap源码学习笔记之bootstrap进度条
2016/12/24 Javascript
three.js实现围绕某物体旋转
2017/01/25 Javascript
React Native 通告消息竖向轮播组件的封装
2020/08/25 Javascript
JavaScript中this的全面解析及常见实例
2019/05/14 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
python 性能提升的几种方法
2016/07/15 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
windows下python安装pip图文教程
2018/05/25 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
python sorted方法和列表使用解析
2019/11/18 Python
Python实现图片识别加翻译功能
2019/12/26 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
简历的个人自我评价范文
2014/01/03 职场文书
党员干部承诺书
2014/03/25 职场文书
爬山的活动方案
2014/08/16 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
酒店总经理岗位职责
2015/04/01 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
学生会自荐信
2019/05/16 职场文书
mysql查看表结构的三种方法总结
2022/07/07 MySQL