Vue.js img src เชื่อมต่อตัวแปรและข้อความ


110

ฉันต้องการเชื่อมตัวแปร Vue.js กับ URL รูปภาพ

สิ่งที่ฉันคำนวณ:

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

ถ้าฉันสร้างสำหรับ Android:

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

อื่น

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

ฉันจะเชื่อมตัวแปรที่คำนวณเข้ากับ URL ได้อย่างไร

ฉันลองแล้ว:

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

คำตอบ:


213

คุณไม่สามารถใช้ curlies (แท็กหนวด) ในแอตทริบิวต์ ใช้สิ่งต่อไปนี้เพื่อต่อข้อมูล:

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

หรือเวอร์ชันสั้น:

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

อ่านเพิ่มเติมเกี่ยวกับคุณลักษณะแบบไดนามิกในเอกสาร Vue


"แต่จริงๆแล้ว Vue.js สนับสนุนการแสดงออกของ JavaScript อย่างเต็มประสิทธิภาพภายในการเชื่อมโยงข้อมูลทั้งหมด": vuejs.org/v2/guide/syntax.html#Using-JavaScript-Expressions
Alexey

42

ในอีกกรณีหนึ่งฉันสามารถใช้ template literal ES6 กับ backticks ได้ดังนั้นสำหรับคุณสามารถตั้งค่าเป็น:

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

4
ฉันได้ลองใช้แล้ว แต่ดูเหมือนว่า webpack จะทำงานก่อนที่การเชื่อมโยงจะได้รับการประมวลผลเนื่องจาก url ของฉันถูกส่งออกไปยังเบราว์เซอร์เป็น "@. / assets / syndicate_images / 34.jpg"
PrestonDocks

imgPreUrlเป็นตัวแปรไม่ใช่ฟังก์ชัน
Goodbye StackExchange



0

สำหรับฉันมันบอกว่าไม่พบโมดูลและไม่ทำงาน ในที่สุดฉันก็พบวิธีแก้ปัญหานี้และได้ผล

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

จำเป็นต้องเพิ่ม "@" ที่จุดเริ่มต้นของเส้นทางท้องถิ่น


0

ถ้าช่วยได้ฉันกำลังใช้สิ่งต่อไปนี้เพื่อรับภาพกราวาตาร์:

<img
        :src="`https://www.gravatar.com/avatar/${this.gravatarHash(email)}?s=${size}&d=${this.defaultAvatar(email)}`"
        class="rounded-circle"
        :width="size"
    />
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.