2017-08-29 3 views
0

Ich habe eine Tabelle mit mehreren Zeilen und ein <td> ein dynamisches URL-Bild geladen Vuetify mitVuejs 2 bindet Bild src

<v-data-table :headers="headers" :items="items"> 
    <template slot="items" scope="props"> 
     <td> 
     <img :src="getImgUrl(props.item.styleCode)" /> 
     </td> 
    </template> 
</v-data-table> 

und dann

checkImage(imageSrc, good, bad) { 
    let img = new Image(); 
    img.onload = good; 
    img.onerror = bad; 
    img.src = imageSrc; 
}, 
getImgUrl(styleCode) { 
    var image = 'http://192.168.1.19/Images/ClassImages/' + styleCode + '.png'; 

    this.checkImage(image, 
    function() { 
    return 'http://192.168.1.19/Images/ClassImages/' + styleCode + '.png'; 
    }, function() { 
    return 'http://192.168.1.19/Images/ClassImages/default.png'; 
    }); 
} 

Diese Rückkehr nichts. Was mache ich schlecht?

Edit: Dies ist ein externes Bild zu laden und wenn nicht vorhanden ein Standardbild laden

+2

Sie‘ gibt in keiner der beiden Methoden – thanksd

+0

zurück Es ist ein Callback, der richtig funktioniert, wenn ich console.log ('gut') von console.log ('schlecht') in die getImgUrl-Funktion schreibe –

Antwort

3

Sie sind nicht alles in der getImgUrl Methode zurückkehrt, das heißt, Sie sind nicht verbindlich das src Attribut zu nichts.

Es wäre viel einfacher sein, zu versuchen, die src zu setzen und dann direkt einen @error Zuhörer zur Verwendung auf dem img Element das Ereignis einer gescheiterten Last handler:

new Vue({ 
 
    el: '#app', 
 
    methods: { 
 
    getImgUrl(i) { 
 
     if (i === 4) { 
 
     \t return 'http://thisonewontwork'; 
 
     } 
 
     return 'http://placehold.it/120x120&text=image' + i; 
 
    }, 
 
    onError(e) { 
 
     let defaultURL = 'http://placehold.it/120x120&text=default'; 
 
     if (e.target.src !== defaultURL) { 
 
     e.target.src = defaultURL; 
 
     } 
 
    } 
 
    } 
 
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js"></script> 
 
<div id="app"> 
 
    <template v-for="i in 4"> 
 
    <img :src="getImgUrl(i)" @error="onError"> 
 
    </template> 
 
</div>

+0

@YuriMorales sehe meine aktualisierte Antwort – thanksd

+0

Ich benutzte diese aber ich denke, Ihre Lösung ist sauberer. Danke –

+0

Ich habe versucht, die 404 nicht in der Konsole mit meinem Ansatz gefunden zu vermeiden ... –