Sagen wir, wir haben drei Buttons auf unserer Seite:
%Vor%Jede Schaltfläche ruft ihre jeweiligen Funktionen auf:
%Vor%Und in der Steuerung könnte es in etwa so aussehen:
%Vor% Da es zu schlecht für die Leistung ist, die $scope
mit zu vielen Beobachtern zu überladen, wäre es nicht besser, dies zu tun:
Und dann benutze es wie:
%Vor%Dadurch wird die Anzahl der Beobachter von 3 auf 1 reduziert. Dies bietet auch den Vorteil, gruppierte Funktionen zu erstellen. Das führt auch zu besserer Lesbarkeit.
Aus meiner Sicht ist dies sinnvoller als lose Funktionen in Ihrem Controller zu haben, zumal nicht alle Controller leichtgewichtig sein können.
Die Sache, die mich daran zweifeln lässt, ist, dass ich nie irgendwelche Beispiele mit dieser Methode gefunden habe. Gibt es einen Grund dafür?
Welcher Ansatz wäre besser in Bezug auf häufig verwendete Entwurfsmuster, bewährte Verfahren und Leistung zu verwenden?
BEARBEITEN: Es gibt Vorschläge, dass ich stattdessen controller as
Syntax verwenden sollte, ich bin mir dessen bewusst, aber das beantwortet meine Frage nicht direkt. Ich würde gerne wissen, welche der beiden Methoden, die ich oben erwähnt habe, die bessere Option ist, die controller as
-Syntax nicht zu verwenden.
Ich habe gerade beide Ansätze ausprobiert und konnte keinen Unterschied in der Leistung sehen. Dies ist aus zwei wichtigen praktischen Gründen:
Es ist schwierig, die Leistung von Angular-Anwendungen zu testen, siehe Wie testen Sie eine AngularJS-Webanwendung? .
Es würde Sinn machen, nur in einer größeren Anwendung auf Leistung zu testen und nicht auf solchen kleinen Beispielen.
Ich verstehe jedoch, dass es sich bei Ihrer Frage um einen Proof of Concept handelt.
Also, in der Theorie ist Ihre zweite Methode die bessere, weil sie die $scope
weniger als die andere verschmutzt und das ist, was empfohlen wird.
In Zukunft würde ich die controllerAs
-Syntax ausprobieren. Alternativ ist dies auch interessant wenn du kein Fan von bist diese Syntax .
Hoffe, das hilft.
Ich stimme Jesús Quintana zu - die Anzahl der Beobachter ändert sich nicht.
Außerdem rate ich Ihnen, die "Controller als" -Syntax zu verwenden. Es ist bequemer, für ein paar $ Scopes auf Ihrer Seite zu arbeiten.
Zum Beispiel in Ihrem Markup:
%Vor%Und im Code:
%Vor%Tags und Links javascript angularjs