Нет описания

Course.vue 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <template>
  2. <ion-card :router-link="'/tabs/course_detail/'+courseObj.id">
  3. <ion-img alt="Silhouette of mountains" :src="feature_img" v-if="feature_img" class='img_16_9' />
  4. <ion-card-header>
  5. <ion-card-title>{{ courseObj.name }}</ion-card-title>
  6. </ion-card-header>
  7. </ion-card>
  8. </template>
  9. <script setup lang="ts">
  10. import { IonPage, IonHeader, IonToolbar, IonTitle, IonContent, IonIcon, onIonViewWillEnter, IonCard, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCardContent, IonImg } from '@ionic/vue';
  11. import { getTrainers, listCourses, BASE_URL } from '@/composable/settings';
  12. import { ref, onMounted } from 'vue'
  13. const props = defineProps({
  14. courseObj: Object,
  15. })
  16. const feature_img = ref()
  17. onMounted(() => {
  18. console.log("--- onmounted ---")
  19. console.log("name === ", props.courseObj)
  20. if( props.courseObj.feature_img && !props.courseObj.feature_img.startsWith('http') ) {
  21. feature_img.value = BASE_URL + props.courseObj.feature_img
  22. }else {
  23. feature_img.value = props.courseObj.feature_img
  24. }
  25. })
  26. const truncate = (str) => {
  27. return "T "+str
  28. }
  29. </script>
  30. <style scoped>
  31. #container {
  32. background-color:#f00;
  33. }
  34. ion-card-title {
  35. font-size:1em;
  36. }
  37. .img_16_9 {
  38. aspect-ratio: 16/9 auto;
  39. object-fit:cover;
  40. }
  41. </style>