recherche

Maison  >  Questions et réponses  >  le corps du texte

angulaire.js - angulaire $scope.$on reçoit des événements et les exécute à plusieurs reprises

Transmettre les valeurs entre

angulaire controller à travers les événements

Chaque fois que la page actualise l'itinéraire, la vue ui-view sera actualisée,

Contrôleur lié

angular.controller('listCtrl',[])

sera rechargé (car j'ai lié le contrôleur listCtrl à l'étiquette dans la vue)

controller dans

$scope.$on('testData',function(ev,data){
 //
})

enregistrera le nombre de fois que listCtrl est rechargé. Lorsque l'événement testData est reçu, $on sera exécuté à plusieurs reprises pour le nombre de fois correspondant.

Je veux que testData soit exécuté une seule fois, que dois-je faire

给我你的怀抱给我你的怀抱2799 Il y a quelques jours1019

répondre à tous(1)je répondrai

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 17:07:58

    Merci pour l'invitation, écrire un service ou accrocher une variable globale sur $rootScope

    if(!$rootScope.isInvoked) {
        var unbindHandler = $scope.$on('testData', function(evt, data) {
            //执行完成后就把该事件解绑 
            unbindHandler();
            $rootScope.isInvoked = true;
        });
    }

    Bien sûr, en ce qui concerne l'abonnement et l'envoi d'événements, s'il ne s'agit pas de quelque chose comme le routage qui nécessite une notification à toutes les étendues, il est recommandé de ne pas utiliser le mécanisme d'événements fourni avec AngularJS. Il est recommandé d'écrire un service EventBus pour gérer. c'est vous-même. Étant donné que le mécanisme d'événements d'AngularJS doit parcourir l'intégralité de l'arborescence de portée, les performances sont moyennes.

    Recommander une synthèse interne de notre équipe :
    https://github.com/ShuyunXIAN...

    répondre
    0
  • Annulerrépondre