1

Wenn die ng-if Ausdruck true ergibt, ruft meine Richtlinie functionX und sendet sie einen Rückruf zu einem bestimmten Zeitpunkt in der Zukunft auszuführen.

Nun das Problem ist: Wenn mein ng-if Ausdrücke nun auf false ändert, führt der Dienst noch den Rückruf ich ihm gesendet ...

Irgendwelche Ideen, wie man mit diesem Problem umgehen?

+0

Bitte fügen Sie etwas von Ihrem Code ein, damit wir Ihnen helfen können. – Sravan

+0

ich herausgefunden habe, was der Rückruf Umfang auszuführen verursacht wurde nach der Richtlinie der durch ng-wenn die Bewertung auf false zerstört wurde: Der Dienst wurde mit der Richtlinie Umfang zu einer PubSub veröffentlichen Veranstaltung registrieren, und nicht einmal die Richtlinie Umfang De-Registrierung wurde zerstört. Was bedeutet, dass es einen Verweis auf den zerstörten Bereich gab, der dort hängt ... Also zusammenfassend: Achten Sie immer darauf, bei der Registrierung für PubSub-Veranstaltungen nach sich selbst aufzuräumen! –

Antwort

0

Ich habe herausgefunden, was der Rückruf nach auszuführen verursache Anwendungsbereich der die Richtlinie durch ng-wenn die Bewertung auf false zerstört wurde:

Der Dienst wurde die Registrierung der Richtlinie Umfang, auf eine PubSub veröffentlichen Veranstaltung und nicht de -Registrieren, sobald der Umfang der Richtlinie zerstört wurde. Was bedeutet, dass es einen Verweis auf den zerstörten Umfang war da draußen hängen ...

Also zusammenfassend: Achten Sie darauf, dich selbst zu bereinigen, wenn für PubSub Ereignisse Registrierung notwendig!

0

Sie könnten FunktionX in eine Zusage einfügen und die .then() - Methode für die aufgelöste Zusage verwenden, um die vorherige Callback-Funktion auszuführen?

Dadurch können Sie innerhalb der Richtlinie und nicht innerhalb des Dienstes ausführen.

Ich denke, es hängt davon ab, was die Funktionen tun, aber klingt so könnte eine mögliche Lösung sein.

+0

[email protected]! Mein Problem mit dieser Lösung ist, dass die .then nur functionX einmal ausgeführt wird, während mit dem Rückruf, es jedes Mal ausgeführt, sie in dem Dienst ausgelöst wurden. Irgendwelche anderen Ideen? Warum, wenn der ngIf-Wert zu false ausgewertet wird, gibt es dann noch eine Instanz seines Bereichs, der mit der Callback-Funktion darauf herumhängt? Tx nochmal! –

+0

Ich fürchte, ich nicht von irgendwelchen anderen Ideen von der Fledermaus denken kann - wenn Sie einen Code schreiben und das, was Sie versuchen, mit dem Code zu erreichen, vielleicht weiter wir bekommen konnten. Zum zweiten Punkt, ich erinnere mich die Dokumentation auf ngIf das Element zu sagen aus dem DOM entfernt werden würde, wie zu versteckten Gegensatz (wie ngHide tut), aber ich erinnere mich nicht, dass alles garantiert von Ausführungskontext entfernt bekommen würde. Ich habe das aber noch nicht überprüft und bin nur in Erinnerung geblieben. – iangregson

Verwandte Themen