Condider folgenden Ausschnitt:Vue verhindert aggresively Wiederverwendung dom-Elemente
<template v-if="tryIsMobile" >
<div class='device device-mobile-portrait' :class="deviceClass">
<div class="device-scroller-container">
<div class='device-scroller'>
<img id='tryit-img-mobile' :src="srcUrlMobile" v-on:load="onImgLoad" v-on:error="onImgError"/>
</div>
</div>
</div>
</template>
<template v-else>
<div class='device device-tablet-landscape' :class="deviceClass" >
<div class="device-scroller-container">
<div class='device-scroller'>
<img id='tryit-img-tablet' :src="srcUrlTablet" v-on:load="onImgLoad" v-on:error="onImgError"/>
</div>
</div>
</div>
</template>
Dieser Code macht bedingt eine der beiden Bilder. Einige Benutzeraktionen führen dazu, dass das tatsächlich angezeigte Bild umgeschaltet wird.
Was ich sehe, ist Folgendes: Wenn Sie von sagen, tryit-img-mobile
zu tryit-img-tablet
, wird das Bild geladen als Teil tryit-img-mobile
wird sofort mit anderen Dimensionen angezeigt. Während der Zeit, in der das Bild geladen wird, wird jedoch die neue Quelle :src="srcUrlTablet"
angezeigt. Das Bild mit src :src="srcUrlMobile"
wird weiterhin angezeigt.
Dies liegt wahrscheinlich daran, dass Vue den gleichen img-Tag für beide Vorlagen verwendet. Wie kann ich Vue davon abhalten und stattdessen separate img-tags verwenden?
hinzufügen 'key' Attribut auf' device' Elemente, mit einigen einzigartigen Wert, wie 'key =" Desktop "' und 'key =" mobile "'. Das wird Vue sagen, die Elemente nicht wiederzuverwenden. –
@JosephSilber: Woeha, das scheint es gelöst zu haben! Wenn Sie das als Antwort notieren würden, nehme ich es gerne an. –