介绍
过滤器实质不改变原始数据 ,只是对数据进行加工处理后返回过滤后的数据再进行调用处理 。我们看一下官方的定义:
Vue.js 允许你自定义过滤器 ,可被用于一些常见的文本格式化 。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道 ”符号指示:
<!-- 在双花括号中 -->
{{ message | capitalize }}
<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>
Vue中过滤器如何使用
组件内过滤器
注意:过滤器函数接收的第一个值是message ,依次是传的值 。
过滤器是可以叠加的 ,后面过滤器接收前面过滤器的返回值 。
如这段代码:
<div id="app">
<div v-bind:id="message|capitalize(a,b)|gl"></div>
</div>
它的过滤器capitalize的第一个参数是message ,第二个第三个参数是字符串a和b
在组件的选项中定义
filters:{
capitalize:function(value,x,y){
return value+x+y;
},
gl:function(value){
value=value.toString();
return value.toUpperCase();
}
}
全局过滤器
全局过滤器使用:Vue.filter( filterName ,( )=>{ return // 数据处理结果 })
参数一:是过滤器的名字 ,也就是管道符后边的处理函数;
参数二:处理函数 ,处理函数的参数同局部过滤器(组件内过滤器)一样
注意:当全局过滤器和局部过滤器重名时 ,会采用局部过滤器
全局定义
Vue.filter("addPriceIcon",function(value){
console.log(value)//200
return ¥ + value
})
new Vue({
...
})
或者
// 实现一个给所有数字小数部分都变成两位 ,没有后补零
export const yuan = value =>
value
? (value / 100).toFixed(2)
: value;
export default {
install(Vue) {
Vue.filter(yuan, yuan);
}
};
在main.js里引入
import filters from @/filter;
Vue.use(filters);
可以在任意组件内使用只能是在v-bind或者双花括号插值里用
<!-- 在双花括号中 -->
{{ message | yuan}}
<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | yuan"></div>
补充:vue中的过滤器可以格式化以及美化内容
从后台接受数据过来的时候时间是时间毫秒 ,我选择了使用过滤器,接下来给大家分享一下使用过程
1.在全局配置过滤器 main.js文件里面
代码:
// 时间过滤器
Vue.filter(dateFilter, function (val) {
const time = new Date(val)
const y = time.getFullYear()
const m = (time.getMonth() + 1 + ).padStart(2, 0)
const d = (time.getDate() + ).padStart(2, 0)
const hh = (time.getHours() + ).padStart(2, 0)
const mm = (time.getMinutes() + ).padStart(2, 0)
const ss = (time.getSeconds() + ).padStart(2, 0)
return y + 年 + m + 月 + d + 日 + + hh + : + mm + : + ss
})
截图:
2.使用过滤器 在需要的组件使用
代码:
{{essayData.times | dateFilter}} //dateFileter是过滤器名 essayData是需要过滤的数据
总结
vue中过滤器的作用可被用于一些常见的文本格式化 。(也就是修饰文本 ,但是文本内容不会改变)
过滤器分全局过滤器和局部过滤器 ,全局过滤器在项目中使用频率很高,要掌握
过滤器可以用在两个地方:双花括号插值 或 v-bind表达式 。
到此这篇关于Vue中过滤器定义以及使用方法的文章就介绍到这了,更多相关Vue过滤器定义使用内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
声明:本站所有文章 ,如无特殊说明或标注 ,均为本站原创发布 。任何个人或组织,在未征得本站同意时 ,禁止复制 、盗用 、采集、发布本站内容到任何网站 、书籍等各类媒体平台 。如若本站内容侵犯了原著者的合法权益 ,可联系我们进行处理 。