参考: https://www.cnblogs.com/liujn0829/p/8622960.html
https://blog.csdn.net/z8735058/article/details/76824548
一、单个过滤器
参考 https://cn.vuejs.org/v2/guide/filters.html
eg1:把英文首字母变为大写
<div id="app">
输入框
<input type="text" v-model="content" @change="changeEvent">
<!-- 显示层,后边加一个过滤器处理函数,把英文首字母变为大写 -->
<h3>{{viewContent | changeCapitalLetter}}</h3>
</div>
<script>
let vm = new Vue({
el:"#app",
data:{
viewContent:"",
content:""
},
methods:{
changeEvent(){
this.viewContent = this.content;
}
},
filters:{
changeCapitalLetter(value){//value是输入框的内容,也是要显示的内容
if(value){
let str = value.toString();
//获取英文,以空格分组把字符串转为数组,遍历每一项,第一项转为大写字母
let newArr = str.split(" ").map(ele=>{
return ele.charAt(0).toUpperCase() + ele.slice(1)
});
return newArr.join(" ") //数组转字符串 以空格输出。。。
}
}
}
})
</script>
二、多个过滤器
新建 dfilter.js 文件
const dfilters = {
addZeroTwo: function(value) {
var value = Math.round(parseFloat(value) * 100) / 100; //注: 一定要用var声明,let会报错
var arr = value.toString().split('.');
if (arr.length === 1) {
return value.toString() + '.00';
} else {
if (arr[1].length === 1) {
return value.toString() + '0';
}
}
},
addZeroOne: function(value) {
var value = Math.round(parseFloat(value) * 100) / 100;
var arr = value.toString().split('.');
if (arr.length === 1) {
return value.toString() + '.0';
} else {
if (arr[1].length === 1) {
return value.toString() + '0';
}
}
}
}
export default dfilters;
在main.js中引入并注册(在new Vue前注册)
import dfilters from '../static/js/dfilters';
for (let key in dfilters) {
Vue.filter(key, dfilters[key]);
}
在组件中使用
<span>原价:¥{{shopgoods.gprice|addZeroTwo}}</span>