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 相关文章推荐
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
Jan 11 Javascript
JS图像无缝滚动脚本非常好用
Feb 10 Javascript
node.js中使用q.js实现api的promise化
Sep 17 Javascript
Javascript优化技巧之短路表达式详细介绍
Mar 27 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
Jun 19 Javascript
javascript常用功能汇总
Jul 05 Javascript
jQuery实现简单的DIV拖动效果
Feb 19 Javascript
详解vue-Resource(与后端数据交互)
Jan 16 Javascript
详解webpack 如何集成第三方js库
Jun 29 Javascript
解决vue页面DOM操作不生效的问题
Mar 17 Javascript
微信小程序转发事件实现解析
Oct 22 Javascript
vue 实现cli3.0中使用proxy进行代理转发
Oct 30 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 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
php实现mysql封装类示例
2014/05/07 PHP
在视频前插入广告
2006/11/20 Javascript
Javascript 获取LI里的内容
2008/12/17 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
js判断设备是否为PC并调整图片大小
2014/02/12 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
tab栏切换原理
2017/03/22 Javascript
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
2018/09/21 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
js实现淘宝浏览商品放大镜功能
2020/10/28 Javascript
Python类的动态修改的实例方法
2017/03/24 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
对python模块中多个类的用法详解
2019/01/10 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
python剪切视频与合并视频的实现
2020/03/03 Python
Python如何爬取51cto数据并存入MySQL
2020/08/25 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
国际贸易专业个人鉴定
2014/02/22 职场文书
活动宣传策划方案
2014/05/23 职场文书
学校安全防火方案
2014/06/07 职场文书
通报表扬范文
2015/01/17 职场文书
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js
Python+Tkinter打造签名设计工具
2022/04/01 Python