Maison > interface Web > js tutoriel > le corps du texte

Comment résoudre le problème des événements de changement dans la fenêtre d'écoute VUE

亚连
Libérer: 2018-06-04 16:12:07
original
2911 Les gens l'ont consulté

Ci-dessous, je partagerai avec vous une brève discussion sur la question des événements de changement de fenêtre de surveillance VUE. Elle a une bonne valeur de référence et j'espère qu'elle sera utile à tout le monde.

Vuejs lui-même est un framework MVVM. Cependant, lors du suivi des événements sur la fenêtre, cela semble souvent insuffisant.

Par exemple, cette fois c'était window.resize, je l'ai aussi vérifié sur Baidu avant de le faire. Je vois que tout le monde s'inquiète de ce problème.

Question : J'ai également rencontré un tel problème aujourd'hui, à propos de l'adaptation du canevas. Modifiez la largeur du canevas en fonction du changement de la fenêtre. Remarque : Les problèmes importants doivent être mentionnés trois fois pour résoudre les bugs du framework. Parlons d'abord de la version du framework (Vue 2.x, ES6 utilisé ici)

.

Solution :

Étape 1 : Définissez d'abord un attribut de largeur d'enregistrement dans les données

data: { 
 screenWidth: document.body.clientWidth // 这里是给到了一个默认值 (这个很重要)
  }
Copier après la connexion

Chapitre Deuxième étape : Nous devons parler de la méthode de montage de l'événement reisze lorsque vue est montée

mounted () { 
    const that = this window.onresize = function() { 
    return function(){ 
      window.screenWidth = document.body.clientWidth;
      that.screenWidth = window.screenWidth
      })()
     } 
    }
Copier après la connexion

Troisième étape : surveillez les changements dans cette valeur d'attribut , si des changements surviennent, transmettez cette valeur à this.screenWidth

watch: { 
   screenWidth (val) { 
      this.screenWidth = val
      } 
    }
Copier après la connexion

Étape 4 : Optimisation : le déclenchement fréquent de la fonction de redimensionnement provoque le blocage de la page

watch: { 
   screenWidth (val) { 
     if (!this.timer) { 
       this.screenWidth = val 
       this.timer = true 
        let that = this 
   setTimeout(function () { 
        // that.screenWidth = that.$store.state.canvasWidth 
  console.log(that.screenWidth) 
        that.init() 
        that.timer = false 
       }, 400) 
      } 
     } 
   }
Copier après la connexion

Ce qui précède est ce que j'ai compilé pour vous. J'espère que cela vous sera utile à l'avenir.

Articles connexes :

Vue implémente le changement d'onglet et la méthode de changement de style

"==" et "===" en JavaScript Explication détaillée de la différence

Notes de développement du projet de blog node.js

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal