DOM
<p class="col-12 c-fl c-mt-24 c-container">
<span class="c-block c-fl c-mr-24">星级评价</span>
<span class="star c-fl col-8 c-h40 c-lh40 size40">
<!--star默认值为5 即5颗星 starArr为array类型 格式如[0, 1, 2, 3, 4] 动态绑定class用于控制星星是否点亮状态 点击事件用于更新starArr数组数据-->
<i v-for="(item, index) in star" class="c-inline c-v c-pr-12 iconfont" :class="starArr.indexOf(index) > -1 ? 'bright':'dark'" @click="changeStar(index)"></i>
</span>
<div class="col-12 c-fl c-container c-relative ">
<textarea class="col-12 c-radius-8 c-b-light-gray c-mt-24 c-borderBox c-p-24" name="" cols="30" rows="5" placeholder="请输入你要评价的内容..."></textarea>
<span class="c-color-default-gray c-absolute c-right-40 c-bottom-12">0/200字</span>
</div>
</p>
JS
<script>
var app = new Vue({
el: '#videoDetail',
data: {
star: 5,
starArr: [] // 存储格式[0, 1, 2, 3, 4]
},
methods: {
changeStar: function (index) {
app.starArr = []
for (var i = 0; i <= index; i++) {
app.starArr.push(i)
}
console.log(app.starArr)
}
}
})
</script>
提交评星 与服务端交互 可以传starArr的length 用于取值当前用户选择的星级
回显数据渲染 可以根据服务端返回的星级 [1-5] 与当前遍历五次数组的下标进行对比 只要小于当前数组的下标就是点亮的状态 否则非点亮