Maison  >  Article  >  interface Web  >  Diffusion et réception d'événements Vue2.0 (mode observateur)

Diffusion et réception d'événements Vue2.0 (mode observateur)

亚连
亚连original
2018-05-30 11:55:421753parcourir

Cet article présente principalement la diffusion et la réception des événements Vue2.0 (mode observateur). Maintenant, je le partage avec vous et le donne comme référence.

Diffusion et réception d'événements 1.Vue1.0 (mode observateur)

Cette méthode de communication de données entre les premiers composants de Vue1.0, le site officiel de Vue fournit deux méthodes $dispatch et $broadcast.

Mais ces deux méthodes seront abandonnées après vue2.0 Les raisons suivantes sont données par le site officiel de vue

Document officiel

2.Diffusion et réception d'événements Vue2.0 (mode observateur)

$emit, $on, $off peuvent être utilisés dans vue2.0 Distribuez, surveillez et annulez respectivement les événements d'écoute. La suggestion de mise à niveau la plus simple donnée par le responsable est d'utiliser un processeur d'événements centralisé, et elle indique également clairement qu'une instance de vue vide peut le faire, car l'instance Vue implémente une interface de distribution d'événements


S'il vous plaît. regardez le code directement. Lors de l'initialisation, ajoutez un objet vue vide nommé eventhub aux données dans le fichier App.vue global :



new Vue({
 el: '#app',
 router,
 render: h => h(App),
 data: {
  eventHub: new Vue()
 }
})

.

De cette façon, nous pouvons appeler les méthodes de transmission et de réception d'événements dans n'importe quel composant. Alors, comment le composant transmet-il et reçoit-il ? Veuillez regarder le code avant :


Un événement d'appel dans un composant se déclenche



//通过this.$root.eventHub获取此对象
//调用$emit 方法
this.$root.eventHub.$emit('你的事件名字', 你的需要传送的数据)


Ce qui précède est un composant émettant un événement, ce qui peut être compris comme j'ai envoyé une diffusion. Si d'autres composants ont besoin de ma diffusion, veuillez vous adapter à ma chaîne. Cette chaîne est le nom de votre événement et le contenu de la diffusion est. vous. Données transmises, alors la question est, comment les autres composants les reçoivent-ils ? Veuillez consulter le code



this.$root.eventHub.$on('你的事件名字', (传送的数据)=>{
  handle(yourData)
} )


Les composants qui doivent écouter la diffusion peuvent la recevoir via notre eventHub défini globalement .$on , le canal de réception est le nom de l'événement diffusé et le numéro dans le rappel est le contenu diffusé.


3. Écrivez-le de manière plus concise

Si vous avez une certaine compréhension de js, vous savez peut-être que js a un truc de prototype, ceci est l'essentiel Ajouter des propriétés supplémentaires aux objets js.


Par exemple, déclarer un objet



var person=function(){
  this.name="小明";
}


et ensuite on étend cela object, Par exemple, lors de l'ajout d'une méthode de parole, le prototype d'outil utile est utile



person.prototype.say=function(){
  alert(this.name);
}


Ceci étend l'objet fonction d'origine


en l'appelant directement



 var a=new person();


personne. say(); Xiao Ming apparaîtra. L’avantage est qu’aucune mémoire supplémentaire ne sera générée et que tous les objets instanciés hériteront de cette méthode du prototype.


Vue est en fait une bibliothèque de classes js. Bien sûr, vous pouvez également utiliser la chose magique du prototype pour développer les propriétés personnalisées :


Initialisez Vue. . Ajoutez cette phrase avant app :



Vue.prototype.$eventHub= Vue.prototype.$eventHub || new Vue()


De cette façon, nous pouvons appeler $eventHub directement dans le composant


Ce qui suit est une reformulation de la méthode ci-dessus :


Publié par



//通过this.$root.eventHub获取此对象
//调用$emit 方法
this.$eventHub.$emit('你的事件名字', 你的需要传送的数据)


Récepteur



 this.$eventHub.$on('你的事件名字', (传送)=>{
    handle(yourData).
  } )


4. Fermez la diffusion


Pour désactiver la diffusion, nous utilisons principalement $off (le nom de votre événement) pour annuler l'écoute !


Ce qui précède est ce que j'ai compilé pour tout le monde, je l'espère sera utile à tout le monde à l'avenir. Utile.

Articles connexes :

Le problème et la solution du scintillement de {{}} lors du rendu de la vue


Une brève discussion sur js Problèmes d'acquisition avec les valeurs ModelAndView


Solution au problème de scintillement du chargement de la page vue



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!

Déclaration:
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