modelList.vue 1000 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. <template>
  2. <div class="etron--card">
  3. <ul>
  4. <li v-for="(item, index) in items" :key="index">
  5. <div class="thumb">
  6. <img :src="item.imagePath" :alt="item.imageAlt" />
  7. </div>
  8. <div class="desc--wrap">
  9. <h2>{{ item.title }}</h2>
  10. <h3>{{ item.description }}</h3>
  11. <NuxtLink
  12. v-if="item.linkUrl"
  13. class="more--detail--href mt--20 ft--16"
  14. :to="item.linkUrl"
  15. :target="item.linkTarget || '_self'"
  16. >
  17. {{ item.linkText || "더 알아보기" }} <i class="ico"></i>
  18. </NuxtLink>
  19. </div>
  20. </li>
  21. </ul>
  22. </div>
  23. </template>
  24. <script setup>
  25. // Props 정의
  26. const props = defineProps({
  27. items: {
  28. type: Array,
  29. required: true,
  30. default: () => [],
  31. validator: (value) => {
  32. return value.every(
  33. (item) => item.hasOwnProperty("title") && item.hasOwnProperty("description")
  34. );
  35. },
  36. },
  37. });
  38. </script>