vue学习笔记(一) ---- vue指令(过滤器)
一、什么是过滤器
官方文档: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>
来吧展示:

使用过滤器之后:
- 使用双括号的方式去添加过滤器
<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)
})
- 方式三:
直接在参数后面传入数据
<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指令(过滤器)的更多相关文章
- 【Vue学习笔记】—— vue的基础语法 { }
学习笔记 作者:oMing vue v-on: 简称 @ <div id='app'> <button v-on:click='Show1'> </button> ...
- vue学习笔记(二)vue的生命周期和钩子函数
前言 通过上一章的学习,我们已经初步的了解了vue到底是什么东西,可以干什么,而这一篇博客主要介绍vue的生命周期和它常用的钩子函数,如果有学过java的园友可能有接触到在学习servlet的时候学过 ...
- vue学习笔记:vue的认识与特点与获取
Vue了解 Vue:读作 view Vue是一个渐进式框架 与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计. Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整 ...
- Vue学习笔记之Vue指令系统介绍
所谓指令系统,大家可以联想咱们的cmd命令行工具,只要我输入一条正确的指令,系统就开始干活了. 在vue中,指令系统,设置一些命令之后,来操作我们的数据属性,并展示到我们的DOM上. OK,接下来我们 ...
- Vue学习笔记【12】——过滤器
概念:Vue.js 允许你自定义过滤器,可被用作一些常见的文本格式化.过滤器可以用在两个地方:mustache 插值和 v-bind 表达式.过滤器应该被添加在 JavaScript 表达式的尾部,由 ...
- vue学习笔记—bootstrap+vue用户管理
vue,读音view,简单易用的前端框架.特点如下: 1.一个mvvm的前端框架,内部做好了html中dom对象和后台用js语言定义的变量的双向绑定 2.中国人尤雨溪维护的个人项目,中文资料多,和go ...
- Vue学习笔记之Vue知识点补充
0x00 修饰符 .lazy 在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 .你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步: &l ...
- Vue学习笔记之Vue学习前的准备工作
0x00 起步 1.扎实的HTML/CSS/Javascript基本功,这是前置条件. 2.不要用任何的构建项目工具,只用最简单的<script>,把教程里的例子模仿一遍,理解用法.不推荐 ...
- VUE学习笔记之vue cli 构建项目
一.环境搭建: 1.安装node.js 从node.js官网下载并安装node,安装过程很简单,一路"下一步"就可以了.安装完成之后,打开命令行工具(win+r,然后输入cmd), ...
- Vue学习笔记之Vue组件
0x00 前言 vue的核心基础就是组件的使用,玩好了组件才能将前面学的基础更好的运用起来.组件的使用更使我们的项目解耦合.更加符合vue的设计思想MVVM. 那接下来就跟我看一下如何在一个Vue实例 ...
随机推荐
- Oracle:ORA-39006、ORA-39213解决办法
执行Oracle数据库导入,遇到报错ORA-39006: internal error.ORA-39213: Metadata processing is not available.这还是第一次遇到 ...
- 云原生之旅 - 10)手把手教你安装 Jenkins on Kubernetes
前言 谈到持续集成工具就离不开众所周知的Jenkins,本文带你了解如何在 Kubernetes 上安装 Jenkins,后续文章会带你深入了解如何使用k8s pod 作为 Jenkins的build ...
- C#使用GDI+同时绘制图像和ROI在picturebox上
Bitmap bmp; /// <summary> /// 绘制图像 /// </summary> /// <param name="g">Gr ...
- perl按照健值排序
perl中如何将按hash key值排序 BRUSH2 10752 11263 BUFFER 11264 11775 MEGASONIC 11776 12287 INPUTMODULE 12800 1 ...
- python学习——查找计算机中的文件
# import os # # path = 'C:/Users/admin/Desktop/images' # files = os.listdir(path) # # for f in files ...
- 【DL论文精读笔记】 深度压缩
深度压缩 DEEP COMPRESSION: COMPRESSING DEEP NEURAL NETWORKS WITH PRUNING, TRAINED QUANTIZATION AND HUFFM ...
- winform窗体全局快捷键
4.使用ShortcutKeys组合键 this.toolStripMenuItem1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Wind ...
- Devexpress中gridControl设置一列不可以编辑
gridView1.Columns["列名"].OptionsColumn.AllowEdit = false;//设置列不可以编辑 记录一下. 大家如果有问题可以 Consol ...
- ThinkPHP6.0在phpstorm添加查询构造器和模型的代码提示
ThinkPHP6.0升级后 使用查询构造器和模型都没有了提示 原因是tp6源码中没有添加注释 找到Model.php * @method Query where(mixed $field, stri ...
- ArcEngine 序列化AO对象
ArcEngine中只要是继承了IPersistStream接口的对象均可调用ArcEngine中的类库进行序列化和反序列化.一般我们会序列化成xml格式,作为字符串存储,需要的时候,反序列化为对象. ...