2016-03-22 4 views
4

Ich benutze ein normales $ rootScope. $ Broadcast um die Kontrolle auf einen anderen Controller zu übertragen. Der andere Controller versucht, auf dieser Basis eine Funktion aufzurufen. Die Frage ist, ob diese Funktion als $ Scope-Funktion bezeichnet wird oder ob es sich immer um eine private Funktion innerhalb des Controllers handelt. Also wenn ich folgendes schreibe:

$scope.$on('aRequest',function(){console.log('it works')}); 

Es funktioniert wie erwartet. Aber wenn ich schreibe:

$scope.$on('aRequest',$scope.someFunction()); 

Es funktioniert nicht. Ich sehe auch keinen Syntaxfehler in der Konsole. Fehle ich etwas?

Wie hinzufügen, dass, wenn dieser Aufruf wie unten als gut gemacht ist es funktioniert:

$scope.$on('aRequest',iWorkProperly); 
var iWorkProperly = function(){}; 

Antwort

6

Schreiben Sie einfach $scope.$on('toggleNavRequest',$scope.someFunction); ohne () - Sie sind auf die Funktion der Referenz vorbei, und nicht tatsächlich auslösende es (Angular den Funktionsaufruf)

Beispiel auslösen:

$scope.someFunction = function() { 
    console.log("Hi"); 
}; 

$scope.$on('toggleNavRequest',$scope.someFunction); 
+0

ich erhalte ein somefunction ist nicht definiert Fehler. Ich werde versuchen, einen Plunkr zu bekommen. Ich habe versucht, wie Sie es vorgeschlagen haben, und vergessen, dasselbe zu erwähnen, da es einen Fehler ausgelöst hat. Auch wenn ich die Referenz gerade passiere, wirft es keinen Fehler, da es nicht gleich passieren sollte. –

+1

@JyotiirmoyPan Werfen Sie einen Blick auf meine aktualisierte Antwort –

+1

Sollte warten auf Grunt, um die Uhr Aufgaben abzuschließen. Mein Fehler. Danke Kamerad. –

Verwandte Themen