鸿宇研学生前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1023 B

  1. <template>
  2. <view :style="style">
  3. <view class="card" v-for="item in list" :key="item.id">
  4. <memberCard
  5. :data="item"
  6. @selectChange="onSelectChange(item.id, $event)"
  7. ></memberCard>
  8. </view>
  9. </view>
  10. </template>
  11. <script>
  12. import memberCard from './memberCard.vue'
  13. export default {
  14. components: {
  15. memberCard,
  16. },
  17. props: {
  18. members: {
  19. type: Array,
  20. default() {
  21. return []
  22. },
  23. },
  24. style: {
  25. type: String,
  26. default: ''
  27. },
  28. },
  29. computed: {
  30. list: {
  31. set(val) {
  32. this.$emit('update:list', val)
  33. },
  34. get() {
  35. return this.members
  36. }
  37. },
  38. },
  39. methods: {
  40. onSelectChange(id, val) {
  41. let list = [...this.list]
  42. const target = list.find(item => item.id === id)
  43. target.isSelected = val
  44. this.list = list
  45. },
  46. },
  47. }
  48. </script>
  49. <style scoped lang="scss">
  50. .card {
  51. margin-top: 16rpx;
  52. }
  53. </style>