Ich habe diese Fabrik,
%Vor%Ich habe diesen Controller,
%Vor%und ich habe diese Link-Funktion in einer Direktive,
%Vor% Wenn authentication.loginRequired = true;
im Controller ausgeführt wird, wird scope.$watch
in der Direktive nicht aufgerufen.
Irgendwelche Ideen warum?
Scope. $ watch akzeptiert als ersten Parameter Ausdruck oder Funktion. Was Sie als ersten Parameter übergeben, ist ein Wert , gespeichert in authetication.loginRequired
.
Das Folgende funktioniert (vorausgesetzt, Sie haben authetication
factory korrekt eingegeben):
Im Anschluss an @ Jusios Antwort ist es auch möglich, einen Zeichenfolgenausdruck zu verwenden, solange Sie Ihre Fabrik Teil des Bereichs machen:
%Vor% Das liegt daran, dass wenn ein $watch
mit einem Zeichenfolgenausdruck versehen wird, diese Zeichenfolge gegen ihren Gültigkeitsbereich ausgewertet wird.
Sie sollten entscheiden, ob es sich lohnt, den Geltungsbereich Ihrer Richtlinie aufzufüllen, damit Sie einen besser lesbaren Code haben. Wenn du es schon aus einem anderen Grund tust, ist das keine große Sache.
Tags und Links angularjs angularjs-directive angularjs-scope