Hay una popup (1) que debe llamarse después de 15 segundos de estar en la página. Pero si el usuario abrió alguna otra popup(2) , entonces no llame a la primera.
ventana emergente (1);
mounted() { this.openModal(); }, // methods openModal() { setTimeout(() => { this.isModalVisible = true; }, 15000); }, ¿Cómo hacerlo? ¿Quizás necesite detener setTimeOut ?
Tal vez algo como el siguiente fragmento:
new Vue({ el: '#demo', data() { return { isModalVisible: false, isModalOther: false } }, methods: { openModal() { setTimeout(() => { if(!this.isModalOther) this.isModalVisible = true; }, 5000); }, openOtherModal() { this.isModalVisible = false this.isModalOther = true; }, }, mounted() { this.openModal(); }, }) <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="demo"> <div v-if="isModalVisible">popup1</div> <div v-if="isModalOther">popup2</div> <button @click="openOtherModal">open popup2</button> </div>Para cancelar un tiempo de espera, todo lo que necesita hacer es llamar a clearTimeout(TimeoutID); . Un timeoutID es devuelto por el método setTimeout() automáticamente, así que simplemente guárdelo en una variable
let timer = setTimeout(...);luego, cuando llame a popup(2), simplemente agregue
this.clearTimeout(timer);y la primera ventana emergente no aparecerá