Ich arbeite an einer einzigen Seite App, mit eckigen und ich habe eine Notwendigkeit, zwischen zwei verschiedenen Direktiven, die im Grunde keine Eltern Kind Beziehung haben.
In Richtlinie A habe ich 2 Stellen, an denen ich dasselbe Ereignis von verschiedenen Funktionen aus senden muss. Und in Richtlinie B, haben Sie einen $ auf Listener dafür geschrieben.
Nun, ich beobachte, dass die wann immer callFirstFunc & seine Sendung zum ersten Mal aufgerufen wird, wird der Listener einmal aufgerufen werden. Beim nachfolgenden Aufruf wird der Listener zweimal, dreimal usw. aufgerufen und nimmt weiter zu.
Die callSecondFunc wird aufgerufen, wenn die callFirstFunc ausgeführt wurde, daher wird der Listener für diese auch als viele Nein bezeichnet. von Zeiten der Hörer für die Übertragung in CallFirstFunc. Also, warum wird der Hörer nicht nur einmal gerufen, warum mehrmals? Es wird jedes Mal wiederholt und erhöht.
Richtlinie A:
app.directive("firstDir", function ($rootScope) {
return {
restrict: 'E',
link: function (scope, element, attrs) {
// some other code
callFirstFunc();
var callFirstFunc = function(){
// some other code
$rootScope.$broadcast("someEvent");
}
callSecondFunc();
var callSecondFunc = function(){
// some other code
$rootScope.$broadcast("someEvent");
}
}
};
});
Richtlinie B:
app.directive("secondDir", function ($rootScope) {
return {
restrict: 'E',
link: function (scope, element, attrs) {
// some other code
scope.$on("someEvent", function(){
detectSTuff();
})
function detectStuff(){
// other code
}
}
};
});
Mögliche Duplikat [AngularJS Ausführung zu oft ausgestrahlt Wiederholung] (http://stackoverflow.com/questions/19553598/angularjs- Broadcast-Repeating-Execution-zu-viele-mal) – kinkajou