uni-app 建议增加一款Nvue的评分插件

发布于 1周前 作者 vueper 来自 Uni-App

uni-app 建议增加一款Nvue的评分插件

3 回复

在uni-app中,虽然目前可能没有现成的Nvue评分插件,但我们可以通过自定义组件的方式来实现一个评分插件。以下是一个简单的示例,展示了如何使用Nvue(Weex)来创建一个评分组件。这个组件将允许用户通过点击星星来给出评分。

评分组件代码(score.nvue)

<template>
  <div class="container">
    <div
      v-for="(star, index) in stars"
      :key="index"
      class="star"
      :class="{ 'selected': index < score }"
      @click="selectStar(index)"
    >
      ★
    </div>
    <div class="score-text">{{ score }}</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      score: 0,
      stars: Array.from({ length: 5 }, (_, i) => i + 1) // 生成5个星星
    };
  },
  methods: {
    selectStar(index) {
      this.score = index + 1;
      this.$emit('input', this.score); // 触发父组件的input事件,传递评分值
    }
  }
};
</script>

<style scoped>
.container {
  display: flex;
  align-items: center;
}
.star {
  font-size: 30px;
  cursor: pointer;
  margin-right: 5px;
  color: gray;
}
.star.selected {
  color: gold;
}
.score-text {
  margin-left: 10px;
  font-size: 20px;
}
</style>

使用评分组件(parent.nvue)

<template>
  <div>
    <score @input="handleScoreChange" />
    <div>您给出的评分是: {{ currentScore }}</div>
  </div>
</template>

<script>
import Score from './score.nvue';

export default {
  components: {
    Score
  },
  data() {
    return {
      currentScore: 0
    };
  },
  methods: {
    handleScoreChange(score) {
      this.currentScore = score;
    }
  }
};
</script>

说明

  1. score.nvue:这是评分组件的实现,它包含5个星星,用户可以通过点击星星来选择评分。评分变化时,通过$emit触发input事件,将评分值传递给父组件。
  2. parent.nvue:这是使用评分组件的父组件,它监听评分组件的input事件,并更新当前评分。

这个示例展示了如何在uni-app的Nvue环境中创建一个简单的评分插件。根据实际需求,你可以进一步扩展和优化这个组件,比如添加半星评分、动画效果等。

回到顶部