Angular JS identifiziert ein Ereignis "digest complete" und entfernt bei der Viewchange # von der URL in eckigen js

7

1) Gibt es ein Digest-Complete-Event, mit dem ich meine Canvas aktualisieren kann? Ich habe eine eckige App, die verschiedene Eigenschaften des Canvas-Objekts anzeigt. Immer wenn ich die Eigenschaft ändere, sobald der Digest abgeschlossen ist, kann ich den Canvas (mit kineticJs) aktualisieren, um das Diagramm mit den neuesten Eigenschaften neu zu zeichnen, wenn ich das Ereignis digest complete erhalten kann.

Momentan rufe ich eine Methode aus der Sicht

auf

2) Ich benutze nur Ansichten und route es in eine neue Ansicht, wenn eine Objekteinstellung geöffnet wird. In diesem Fall ändert sich die URL auch mit der Webseite / # view.Its nur das Popup Ich brauche nicht die #view am Ende der Seite, aber immer noch das Routing-und View-Konzept. Gibt es einen anderen Weg?

    
anandaravindan 15.01.2014, 13:14
quelle

2 Antworten

22

Aktualisieren

Karl Seamon hielt einen Vortrag in ng-conf 2014 .

In diesem Video ( 22:20 minute ) sprach er über eine Zukunft Möglichkeit einer eingebauten $ postDigestWatch .

Hier ist ein offenes Thema in: Ссылка

Also, es wird wahrscheinlich in zukünftigen Versionen zum Kern kommen, bis dann können Sie den Trick unten verwenden.

Ein Beispiel zu Plunker .

  • Ein Digest-Zyklus kann mehrere $digest haben.
  • I $watch für die erste $digest , um eine $timeout zu registrieren, die nach Beendigung des Digest-Zyklus laufen würde.
  • Ich muss die $watch sofort abmelden, um mehrere $timeout Callbacks für einen Digest-Zyklus zu vermeiden.
  • Im $timeout Callback rufe ich den Benutzer Callback auf und registriere ein $watch für das nächste $digest .

Verwenden Sie $ watch in Verbindung mit $ timeout:

%Vor%

$ digest , aus den Dokumenten :

  

Wenn Sie benachrichtigt werden möchten, wenn $ digest () aufgerufen wird, können Sie eine Funktion watchExpression mit $ watch () ohne Listener registrieren.

$ timeout , Von hier: Verzögern Sie die Ausführung von angularjs nach $ digest (DOM-Ereignis wird ausgelöst)

  

$ timeout bewirkt, dass ein anderer Digest-Zyklus ausgeführt wird, nachdem die Funktion ausgeführt wurde. Wenn Ihr Auslöser nichts Angular beeinflusst, können Sie das Argument invokeApply auf false setzen, um zu vermeiden, dass ein anderer Digest-Zyklus ausgeführt wird.

    
Ilan Frumer 15.01.2014, 13:20
quelle
0

Als Alternative zu dem, was Ilan sagte, könnten Sie $ evalAsync verwenden.

aus demselben Dokument :

%Vor%

Sehen Sie sich auch diesen Kommentar zu diesem Thema an.

>     
xyclos 15.01.2014 13:32
quelle

Tags und Links