过滤器(filters)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="../js/vue.js"></script>
<style>
.source-box{
width: 300px;
height: 50px;
display: flex;
justify-content: space-between;
}
.open{
width: 30px;
height: 30px;
background-color: blue;
}
.close{
width: 30px;
height: 30px;
background-color: black;
}
</style>
</head>
<body>
<div id="app">
<div class="source-box" v-for="(item, indexs) in services">
<div>{{ item.title }}</div>
<div class="star-box" v-for="c in 5" :class="item.source | starClass(c)"></div>
<div>{{ item.source }}</div>
</div>
</div>
</body>
<script>
new Vue({
el:'#app',
data:{
services:[
{
title:'商品1',
source:3.6
},
{
title:'商品2',
source:4.3
},
{
title:'商品3',
source:2.7
},
]
},
filters:{
starClass(target,c){
return Math.round(target) > c ? 'open' : 'close';
}
}
})
</script>
</html>
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/88aed10237b4a3bd469a930fcf0c2d9f.png)
- 上述小方块,可以换成小图标,这边只是为了方便展示,所以就用了小方块来代替星星图标。
- 过滤器,可以传值,可以不传值,代码中的target代表的就是过滤对象本身,c代表你传的值,target无论你传不传都有。