angulaire.js - angulaire $scope.$on reçoit des événements et les exécute à plusieurs reprises
给我你的怀抱
给我你的怀抱 2017-05-15 17:05:58
0
1
1008
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

给我你的怀抱
给我你的怀抱

répondre à tous(1)
曾经蜡笔没有小新

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...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal