128 votes

Vue.js img src concaténer variable et texte

Je veux concaténer une variable Vue.js avec l'URL d'une image.

Ce que j'ai calculé :

imgPreUrl : function() {
    if (androidBuild) return "android_asset/www/";
    else return "";
}

Si je construis pour Android :

<img src="/android_asset/www/img/logo.png">

Else

<img src="img/logo.png">

Comment puis-je concaténer la variable calculée avec l'URL ?

J'ai essayé :

<img src="{{imgPreUrl}}img/logo.png">

246voto

Dan Mindru Points 2994

Vous ne pouvez pas utiliser de boucles (balises moustaches) dans les attributs. Utilisez ce qui suit pour concaténer des données :

<img v-bind:src="imgPreUrl + 'img/logo.png'">

Ou la version courte :

<img :src="imgPreUrl + 'img/logo.png'">

Pour en savoir plus sur les attributs dynamiques, consultez la page Documentation sur Vue .

0 votes

"Mais Vue.js prend en charge la pleine puissance des expressions JavaScript dans toutes les liaisons de données" : vuejs.org/v2/guide/syntaxe.html#Utilisation-des-expressions-JavaScript

48voto

Ardhi Points 467

Dans un autre cas, je suis capable d'utiliser le modèle littéral ES6 avec des backticks, donc pour le vôtre, il pourrait être défini comme :

<img v-bind:src="`${imgPreUrl()}img/logo.png`">

4 votes

J'ai essayé, mais il semble que webpack s'exécute avant que les liens soient traités, car mon url est affiché dans le navigateur sous la forme "@./assets/syndicate_images/34.jpg".

0 votes

imgPreUrl est une variable, pas une fonction.

11voto

iliketofu Points 111

Essayez juste

<img :src="require(`${imgPreUrl}img/logo.png`)">

0 votes

Rapide et facile, ty

0 votes

C'est la manière correcte, comme indiqué dans la documentation : nuxtjs.org/docs/2.x/directory-structure/assets#images

3voto

Mostafa Ahmed Points 494

Si vous manipulez ceci à partir de la base de données, essayez :

<img :src="baseUrl + 'path/path' + obj.key +'.png'">

0voto

Ares Points 139

Pour moi, il a dit Module n'a pas trouvé et n'a pas travaillé. Finalement, j'ai trouvé cette solution et ça a marché.

<img v-bind:src="require('@' + baseUrl + 'path/path' + obj.key +'.png')"/>

Il fallait ajouter '@' au début du chemin local.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X