Vue中的过滤器

发布于:2024-12-18 ⋅ 阅读:(45) ⋅ 点赞:(0)

过滤器filters适用于简单的逻辑处理,例如:对一些数据进行格式化显示。他的功能完全可以使用methods,computed来实现。过滤器可以进行全局配置,也可以进行局部配置:

① 全局配置:在构建任何Vue实例之前使用Vue.filter(‘过滤器名称’, callback)进行配置。

② 局部配置:在构建Vue实例的配置项中使用filters进行局部配置。过滤器可以用在两个地方:插值语法和v-bind指令中。

多个过滤器可以串联:{{msg | filterA | filterB | filterC}}

过滤器也可以接收额外的参数,但过滤器的第一个参数永远接收的都是前一个过滤器的返回值

需求:

从服务器端返回了一个商品的价格price,这个price的值可能是这几种情况:''、null、undefined、60.5

要求:

如果是'' 、null、undefined ,页面上统一显示为 -

如果不是,则页面上显示真实的数字即可。

在Vue3当中,已经将过滤器语法废弃了。


<body>

<h1>{{msg}}</h1>

<!-- 计算属性实现 formatPrice -->

<h2>商品价格:{{formatPrice}}</h2>

<!-- 方法实现 formatPrice2() -->

<h2>商品价格:{{formatPrice2()}}</h2>

<!-- 过滤器实现 放在插值语法中 -->

<h2>商品价格:{{price | filterA | filterB(3)}}</h2>

<!-- 过滤器放入到v-bind中 ,不能放到v-model中-->

<input type="text" :value="price | filterA | filterB(3)" />

</div>



<hr />

<!-- 全局过滤器 -->

<div id="app2">

<h2>商品价格:{{price | filterA | filterB(3)}}</h2>

</div>



<script>

// 4、 配置全局的过滤器。

Vue.filter("filterA", function (val) {

if (val === null || val === undefined || val === "") {

return "-";

}

return val;

});



Vue.filter("filterB", function (val, number) {

return val.toFixed(number);

});



const vm2 = new Vue({

el: "#app2",

data: {

price: 20.3,

},

});



const vm = new Vue({

el: "#app",

data: {

msg: "过滤器",

price: 50.6,

},

//1、方法实现需求

methods: {

formatPrice2() {

if (this.price === "" || this.price === undefined || this.price === null) {

return "-";

}

return this.price;

},

},

// 2、计算属性实现

computed: {

formatPrice() {

if (this.price === "" || this.price === undefined || this.price === null) {

return "-";

}

return this.price;

},

},

// 3、局部过滤器



/* filters: {

filterA(val) {

if (val === null || val === undefined || val === "") {

return "-";

}

return val;

},

//需求: 确保传递过来的数据val,保留两位小数。

filterB(val, number) {

console.log(val); //此时的值时filterA的返回值

return val.toFixed(number);

},

}, */

});

</script>

</body>

网站公告

今日签到

点亮在社区的每一天
去签到