Maison  >  Questions et réponses  >  le corps du texte

La fonction d'affichage dynamique d'image de Vue.js échoue

<p>Je suis débutant avec vue.js et j'essaie d'afficher dynamiquement des images mais j'ai des problèmes avec l'affichage dynamique, si je les modifie manuellement, elles fonctionnent correctement. J'ai trouvé de nombreuses questions similaires avec quelques différences et aucune d'entre elles ne m'a aidé. </p> <p>Voici ma structure : </p> <pre class="brush:php;toolbar:false;">-src --actifs ---pizza ----pizza-1.jpg ----pizza-2.jpg ---Hamburger ----hamburger-1.jpg ----hamburger-2.jpg ---frites ----frites-1.jpg ----frites-2.jpg --Composants --DBjson ---main.json</pre> <p>J'essaie de créer cette boucle : </p> <pre class="brush:php;toolbar:false;">`<div class="holder" v-for="restaurant dans les restaurants"> <img :src="getImage(restaurant.name, restaurant.mainImage)"/> </div> exporter par défaut { nom : "restaurant", données() { retour { restInfo : this.$attrs.restData, } ; }, méthodes : { getImage (nom du dossier, nom de l'image) { let image = require.context("@/assets/"); return image("./" + nom du dossier + "/" + nom de l'image); }, }, };`</pre> <p>Mon fichier JSON : </p> <pre class="brush:php;toolbar:false;">{ "identifiant": 1, "nom": "pizza", "prix": "10$", "mainImage": "pizza-1.jpg", "images": ["pizza-2.jpg", "pizza-1.jpg"], },</pré>
P粉216807924P粉216807924425 Il y a quelques jours539

répondre à tous(1)je répondrai

  • P粉798343415

    P粉7983434152023-08-21 00:19:41

    getImage devrait demander et renvoyer une image en utilisant son chemin de fichier relatif complet

    Vue 2.x

    getImage(folderName, imageName) {
      return require(`@/assets/${folderName}/${imageName}`)
    }
    

    Vue 3.x + Vite

    Pour autant que je sache, Vite ne peut pas gérer l'alias '@' pour cette tâche spécifique, alors assurez-vous de définir vos chemins selon vos besoins

    getImage(folderName, imageName) {
      return new URL(`../assets/${folderName}/${imageName}`, import.meta.url).href;
    }
    

    répondre
    0
  • Annulerrépondre