2016-07-01 8 views
1

Ich beginne ein Projekt mit AngularJs (v 1). Und das war schön, bis ich mich über die Qualität meines Projekts wunderte. Denn jetzt versuche ich zu vermeiden, die $scope, $scope.$apply, $scope.broadcast und andere schöne Dinge wie diese zu missbrauchen.AngularJs, über den Digest-Zyklus

So jetzt, alle meine _Controller_s verwenden var vm = this; anstelle von $scope und meine Anweisungen verwenden Callbacks anstelle von $scope.$apply. Das Problem, das ich habe, ist, dass die Änderungen nicht aktualisiert werden. Während die Verwendung von $scope.$apply aus einem Modellattribut innerhalb einer Direktive die Ansichten automatisch aktualisiert, ist dies bei einem Rückruf zu einem Controller, der das Modellattribut aktualisiert, nicht der Fall. Dann ist es ein Workaround, _event_s zu verwenden, aber da $scope.$broadcast und seine Freunde nicht empfohlen werden, muss ich meine eigenen Beobachter erstellen.

Aber am Ende habe ich das Gefühl, die coolen Features von AngularJs zu verlieren. Und begann sich zu fragen, wie es Profis geht.

  • Wie stellen Sie sicher, dass an einem Modell vorgenommene Änderungen in einer Ansicht aktualisiert werden?
  • Wie stellen Sie sicher, dass Änderungen, die an einem Modell aus einer Ansicht vorgenommen werden, auf andere aktualisiert werden (Master-Details)?

Vielen Dank für Ihre Ratschläge.

+0

Dies ist eine ziemlich breite Frage. Für allgemeine Hinweise war der [Angular 1 Style Guide] (https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md) eine große Hilfe für uns. – TrueWill

+0

Viel zu breit. Geben Sie ein konkretes minimales Beispiel für etwas an, das nicht wie erwartet funktioniert. Mit Code. –

Antwort

1

Rückläufe lösen keinen eckigen Digest aus. Aber Ereignisse lösen auch keinen Digest aus. Die Sache ist, dass Sie in der Regel Digest aufrufen möchten nach: -Benutzer klicken -Benutzereingabe -http Antwort -... Und für alle diese Fälle gibt es eingebaute Funktionen, die Digest auslösen: $ http, ng- klicken, ng-ändern, etc.

+0

Also @Petr Averyanov, explizite Aufrufe an $ Scope. $ Apply 'ist nicht so schlimm? –

+1

explizite Aufrufe an $ scope. $ Apply ist nicht schlecht, es ist einfach nicht für Anfänger - Sie müssen 100% sicher sein, was Sie tun –

Verwandte Themen