一、什么是过滤器

官方文档:https://cn.vuejs.org/v2/guide/filters.html

二、过滤器的使用

没有使用过滤器之前:

<div id="app">
<table>
<thead>
<tr>
<th>排名</th>
<th>菜名</th>
</tr>
</thead>
<tbody>
<tr v-for="item in list" :key="item.id">
<td>{{ item.id }}</td>
<td>{{ item.name}}</td>
</tr>
</tbody>
</table>
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
list: [
{ id: 1, name: '黄焖鸡' },
{ id: 2, name: '烤鱼'},
{ id: 3, name: '鸭血粉丝'},
{ id: 4, name: '大碗米线' },
{ id: 5, name: '螺蛳粉' },
{ id: 6, name: '鱼香肉丝'},
]
}
})
</script>

来吧展示:

使用过滤器之后:

  1. 使用双括号的方式去添加过滤器
 <tr v-for="item in list" :key="item.id">
<td>{{ item.id }}</td>
<td>{{ item.name | filterData }}</td>
</tr>
Vue.filter('filterData',function () {
console.log('过滤器被调用了。。。')
return '螺蛳粉 my love~~'
})
//在vm实例对象之前去定义过滤器
var vm = new Vue({
.........
})

来吧展示:

注意:过滤器的处理函数中的第一个参数已经规定死了,就是管道符前面的数,这里也就是item.name

如下:

Vue.filter('filterData',function (data) {
console.log('过滤器被调用了。。。')
return data+ '~~~~~'
})

三、给过滤器传递参数

 <td>{{ item.name | filterData('xxxxxxx')}}</td>
  Vue.filter('filterData',function (data,str) {
return data + str
})

来吧展示:

四、使用多个过滤器

<td>{{ item.name | filterData | addstr}}</td>
 Vue.filter('filterData',function (data) {
return data+ '~~~~~'
})
Vue.filter('addstr',function (data) {
return data + '哈哈哈哈哈'
})

来吧展示:

五、全局过滤器的栗子

<div id="app">
<p>{{msg}}</p>
</div>
var vm = new Vue({
el: '#app',
data: {
msg: '鸭血粉丝里面放有:鸭血,鸭肠,鸭肝'
},
methods: {}
});



使用全局过滤器,将"鸭"改成"猪"

方式一:

 <p>{{msg | filtermsg}}</p>
 Vue.filter('filtermsg',function (data) {
// return data.replace('a','x')
// replace只能替换掉第一项
// 第一个参数传入正则,可以全局匹配
return data.replace(/鸭/g,'猪')
})



2. 方式二:

在过滤器中传递参数

 <p>{{msg | filtermsg('猪')}}</p>
Vue.filter('filtermsg',function (data,str) {
return data.replace(/鸭/g,str)
})
  1. 方式三:

    直接在参数后面传入数据
<p>{{msg | filtermsg}}</p>
Vue.filter('filtermsg',function (data,str='猪') {
return data.replace(/鸭/g,str)
})

如果定义了另外一个vm2实例

那么也可以使用全局过滤器

<body>

<div id="app">
<p>{{msg | filtermsg}}</p>
</div>
<hr> <div id="app2">
<p>{{msg | filtermsg }}</p>
</div> <script>
Vue.filter('filtermsg',function (data,str='猪') {
return data.replace(/鸭/g,str)
}) var vm = new Vue({
el: '#app',
data: {
msg: '鸭血粉丝里面放有:鸭血,鸭肠,鸭肝'
},
methods: {}
});
var vm2 = new Vue({
el:'#app2',
data: {
msg: '哇哦~是鸭血粉丝'
},
methods: {}
});
</script>
</body>

六、私有过滤器

<div id="app2">
<p>{{msg | filtermsg | addStr}}</p>
</div>
var vm2 = new Vue({
el:'#app2',
data: {
msg: '哇哦~是鸭血粉丝'
},
methods: {},
filters:{
// addStr:function (data) {
addStr(data){
return data + '~~~~~~wao好好恰'
}
} });

注意:

私有过滤器只能vm2实例的容器才可以使用,vm实例的区域不能使用

如果全局过滤器与私有过滤器重名的话,会以就近原则,执行私有的过滤器

<div id="app2">
<p>{{msg | filtermsg | addStr}}</p>
</div>
Vue.filter('filtermsg',function (data,str='猪') {
return data.replace(/鸭/g,str)
})
var vm2 = new Vue({
el:'#app2',
data: {
msg: '哇哦~是鸭血粉丝'
},
methods: {},
filters:{
// addStr:function (data) {
addStr(data){
return data + '~~~~~~wao好好恰'
},
filtermsg:function (data) {
// return data.replace(/鸭/g,str)
return data + '111111'
}
}
});

vue学习笔记(一) ---- vue指令(过滤器)的更多相关文章

  1. 【Vue学习笔记】—— vue的基础语法 { }

    学习笔记 作者:oMing vue v-on: 简称 @ <div id='app'> <button v-on:click='Show1'> </button> ...

  2. vue学习笔记(二)vue的生命周期和钩子函数

    前言 通过上一章的学习,我们已经初步的了解了vue到底是什么东西,可以干什么,而这一篇博客主要介绍vue的生命周期和它常用的钩子函数,如果有学过java的园友可能有接触到在学习servlet的时候学过 ...

  3. vue学习笔记:vue的认识与特点与获取

    Vue了解 Vue:读作 view Vue是一个渐进式框架 与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计. Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整 ...

  4. Vue学习笔记之Vue指令系统介绍

    所谓指令系统,大家可以联想咱们的cmd命令行工具,只要我输入一条正确的指令,系统就开始干活了. 在vue中,指令系统,设置一些命令之后,来操作我们的数据属性,并展示到我们的DOM上. OK,接下来我们 ...

  5. Vue学习笔记【12】——过滤器

    概念:Vue.js 允许你自定义过滤器,可被用作一些常见的文本格式化.过滤器可以用在两个地方:mustache 插值和 v-bind 表达式.过滤器应该被添加在 JavaScript 表达式的尾部,由 ...

  6. vue学习笔记—bootstrap+vue用户管理

    vue,读音view,简单易用的前端框架.特点如下: 1.一个mvvm的前端框架,内部做好了html中dom对象和后台用js语言定义的变量的双向绑定 2.中国人尤雨溪维护的个人项目,中文资料多,和go ...

  7. Vue学习笔记之Vue知识点补充

    0x00 修饰符 .lazy 在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 .你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步: &l ...

  8. Vue学习笔记之Vue学习前的准备工作

    0x00 起步 1.扎实的HTML/CSS/Javascript基本功,这是前置条件. 2.不要用任何的构建项目工具,只用最简单的<script>,把教程里的例子模仿一遍,理解用法.不推荐 ...

  9. VUE学习笔记之vue cli 构建项目

    一.环境搭建: 1.安装node.js 从node.js官网下载并安装node,安装过程很简单,一路"下一步"就可以了.安装完成之后,打开命令行工具(win+r,然后输入cmd), ...

  10. Vue学习笔记之Vue组件

    0x00 前言 vue的核心基础就是组件的使用,玩好了组件才能将前面学的基础更好的运用起来.组件的使用更使我们的项目解耦合.更加符合vue的设计思想MVVM. 那接下来就跟我看一下如何在一个Vue实例 ...

随机推荐

  1. 嵌入式-C语言基础:字符串strlen和sizeof的区别

    strlen表示的实际的字符串长度,不会把字符串结束符'\0'计算进去,而sizeof则不是实际的字符串长度,它会把字符串的结束标识符'\0'也包含进去. #include<stdio.h> ...

  2. 第一章:TypeScript快速入门

    一.TypeScript 开发环境搭建 1.TypeScript 是什么? TypeScript 是一种由微软开发的自由和开源的编程语言.它是 JavaScript 的一个超集,而且本质上向这个语言添 ...

  3. 有趣的 Go HttpClient 超时机制

    hello,大家好呀,我是既写 Java 又写 Go 的小楼,在写 Go 的过程中经常对比这两种语言的特性,踩了不少坑,也发现了不少有意思的地方,今天就来聊聊 Go 自带的 HttpClient 的超 ...

  4. 08 | 白话容器基础(四):重新认识Docker容器

    你好,我是张磊.今天我和你分享的主题是:白话容器基础之重新认识Docker容器. 在前面的三次分享中,我分别从Linux Namespace的隔离能力.Linux Cgroups的限制能力,以及基于r ...

  5. vcenter的虚拟机开机进入bios

  6. lauyi渲染

    下拉框 <div class="layui-form-item x-city" id="start"> <label class=" ...

  7. Zookeeper的服务器的log4j升级为log4j2的升级方案(忽略配置化兼容问题)

    参考在线markdown编辑器: http://marxi.co/ Zookeeper的服务器的log4j升级为log4j2的升级方案(忽略配置化兼容问题) 目前希望可以升级将Zookeeper中lo ...

  8. 【翻译】rocksdb调试指引

    rocksdb调试指引 翻译自官方wiki:https://github.com/facebook/rocksdb/wiki/RocksDB-Tuning-Guide 转载请注明出处:https:// ...

  9. go-carbon 1.5.2版本发布, 修复已知 bug 和新增功能及葡萄牙语翻译文件

    carbon 是一个轻量级.语义化.对开发者友好的golang时间处理库,支持链式调用. 目前已被 [awesome-go](https://github.com/avelino/awesome-go ...

  10. 10-排序6 Sort with Swap(0, i) (25point(s))

    10-排序6 Sort with Swap(0, i) (25point(s)) Given any permutation of the numbers {0, 1, 2,..., N−1}, it ...