Wir sollten einen konsistenten Standardwert für den Namen des Direktiven-Controllers einer Komponente verwenden, wenn er an den Bereich angehängt wird. Siehe https://github.com/angular/angular.js/issues/10007#issuecomment -166704255
Derzeit verwenden wir standardmäßig den kanonischen Namen der Komponente. Dies ist nicht ideal, da
a) Komponentennamen können für die Verwendung in einer Vorlage lang und unhandlich werden
b) Es ist komplizierter, das zu verwendende Template in Angular 2 automatisch zu aktualisieren, wo der Kontext der Controller ist .
Die Kriterien für den Namen sind:
1) muss für alle Komponenten gleich sein
2) es muss mit $
beginnen
3) es muss kurz sein (2-4 Zeichen)
Darüber hinaus sollte der Name darstellen, was im Umfang tatsächlich veröffentlicht wird.
Einige der früheren Vorschläge beinhalten:
vm
- Dies ist der häufig verwendete Name in vielen Anwendungen, aber der Controller ist nicht unbedingt ein "Ansichtsmodell".$comp
- Dies ist der aktuelle Vorschlag des Teams, kann aber mit Vergleichen verwechselt werden und ist nicht so kurz$ctrl
- kann mit ConTRoL-Eingabeelementen verwechselt werden$this
- der Controller ist in der Vorlage nicht wirklich this
, da der Kontext eigentlich immer noch der Geltungsbereich istc) Programmierer sind versucht, isolate:false
zu verwenden und direkt auf Vorfahren-Controller zuzugreifen.
@drpicox - Ich bin versucht zu sagen, dass wir isolate: false
für Komponenten verbieten, die mit diesem Helfer erstellt wurden.
Ich stimme zu, nachdem ich Folgendes überlegt habe:
isolate: true
wenn Beschränkung 'E' ist: für mich sind sie wirklich Komponenten, in denen $ctrl Notation volle Bedeutung hatisolate: false
wenn einschränken 'A' ist: für mich sind sie _decorators_, eine Art Enhancer der bestehenden Komponenten, in diesem Fall kollidiert $ctrl, also ist die aktuelle Nomenklatur in OrdnungAber ich bin der Meinung, dass der zweite Fall besser mit Direktiven zu tun hat, _Dekoratoren_ sind nicht häufig, normalerweise auf niedrigem Niveau und nicht für Junioren geeignet.
Es ist also wahrscheinlich eine gute Idee, isolate: false
zu verbieten.
In einer anderen Denkweise über _Decorators_ sollte eine Funktion zum Abrufen des Controllers der 'E'-Komponente der aktuellen Entität eine gute Idee sein, insbesondere um generische _Decorators_ zu schreiben, um mit jeder aktuellen Komponente umzugehen (erfordert Kräfte, im Voraus zu wissen, welcher Controller ist und Sie können keine Art von Schnittstelle für das verwenden, wonach Sie suchen).
Ich mag $cmp
, finde aber $comp
noch besser, weil es übersichtlicher ist.
Ich mag
$cmp
, finde aber$comp
noch besser, weil es übersichtlicher ist.
Ich mag $comp
. Immer wenn ich $cmp
sehe, denke ich "vergleichen".
anderer Vorschlag: Warum nicht den Namen der Komponente als Controller-Instanznamen verwenden?
Beispiel: Benutzerprofil -> Bereich.Benutzerprofil
@tabanliviu So wird es derzeit bei master
gemacht, aber @petebacondarwin hat in genau dieser Ausgabe, im ersten Post, erwähnt, warum ein gemeinsamer Name besser ist.
@mgol :+1: Ich glaube, ich habe das beschönigt, als ich das Ticket gelesen habe. Sollte diese Änderung eher als ngUpgrade-Problem betrachtet werden? Ich denke im Zusammenhang mit Angular 1.x ist die aktuelle Implementierung eine gute Lösung. Vielleicht als Einstellungsfunktion verfügbar machen, die den Komponentennamen übernimmt und den Controller-Namen ausgibt? Auf diese Weise dient es dem aktuellen Muster und einem zukünftigen Migrationspfad.
Bikeshed-Zeit.
+1 für $ctrl.
Ctrl hat viele bereits vorhandene Kultur in der Angular 1-Dokumentation und Beispiele als Suffix „Controller“. Versuchen Sie, "angular ctrl" für ein gutes Maß zu googeln.
Die aktuelle Wahl, es vom Komponentennamen abzuleiten, ist ziemlich unangenehm, da sie in realen Anwendungen in der Tat dazu neigen, ziemlich lang zu werden.
:+1: für $ctrl
fühlt sich $vm
standardmäßig eher wie eine Aussage darüber an, wie Controller verwendet werden sollten.
+1 für $ctrl
.
Wir haben im ng-forward-Team ziemlich heftig darüber diskutiert und entschieden, dass ctrl
ein weniger belasteter Begriff ist als vm
.
Ich stimme für $ctrl
und würde mich sehr freuen, wenn dies die Leute dazu ermutigt, ihre Controller nicht mehr vm
zu nennen :P
Ach, das möchte ich auch noch ergänzen
dies kann mit Eingabesteuerelementen verwechselt werden
Nö. Nicht wirklich.
$ctrl
Ich denke, das wäre für jeden am verständlichsten und intuitivsten.
+1 $ctrl
Andere Vorschläge:
Ich stimme für $this
, weil in ng2 this
des Controllers der Kontext der Vorlage ist (und meiner Meinung nach ist component
sehr gut als Übergangswerkzeug zwischen ng1 und ng2).
+1 für $ctrl
Ich bevorzuge auch die Eigenschaft $ctrl
, da sie den Komponenten-Controller darstellt.
+1 für $ctrl
+1 für $dies
Ich würde sogar mit this
gehen und $
fallen lassen, wenn es nicht zu viel Hack wäre, es zu tun. Es ist auch die einzige Option, die nicht kurz für etwas anderes steht, und ich hasse Abkürzungen. :)
Ich würde $ctrl oder $cc wählen (kurz für Component Controller)
+1 für $ctrl
Wir könnten es einfach $troll
nennen, es hat ein bisschen $this
und die Hälfte von $controller
. Nein, nur ein Scherz, mir geht es gut mit $ctrl
. :+1:
$Strg + 1
$VM
Vorteile
Nachteile
$ctx
- Abkürzung für Kontext.
Allgemeiner als $ctrl
, weniger anonym als $vm
, keine Verwirrung wie $comp
oder $this
.
Ich habe mir die Template-Engines (Jade, Handlebars, Moustache.js, Dust.js, Nunjucks, EJS usw.) angesehen und es scheinen die Namen context
, locals
oder data
zu sein
Auch $ctx
hat für den Kontext nicht die gleiche kognitive Überlastung wie $ctrl
(oder $this
) und tatsächlich sagten Sie in Angular 2, where the context is the controller
.
@albertosantini - Ein Problem mit $ctx
ist, dass der aktuelle Kontext der aktuelle Bereich ist, auf den auch direkt von this
zugegriffen werden kann.
$vc
- steht für View Controller.
Ich habe eine Referenz in Apples Dokumenten gefunden
"... Die UIViewController-Klasse definiert die Methoden und Eigenschaften zum Verwalten Ihrer Ansichten, zum Behandeln von Ereignissen ... "
Ich stimme stark für $this
:
<textarea ng-change="$this.handleChange">
_Vorteile:_
ctrl = this
machen, damit beide Entitäten gleich aussehen.$this
fühlt sich an, als würde Angular sogar _"mehr proprietäre Sprache"_ einführen, was eine der beliebtesten Beschwerden über Angular ist. Ihr Controller wird so verschmutzt: controller: function() {
var ctrl = this;
ctrl.items = [];
ctrl.text = '';
ctrl.handleSubmit = function () {
ctrl.items.push({text: ctrl.text});
ctrl.text = '';
};
}
anstelle des saubereren, eleganten und Framework-agnostischen
controller: function() {
this.items = [];
this.text = '';
this.handleSubmit = function () {
this.items.push({text: this.text});
this.text = '';
};
<textarea onChange={this.handleChange}>
@dmitriz Ein Problem mit $this
in AngularJS ist, dass der Kontext (dh this
) in der Vorlage nicht wirklich der Controller ist. Es scheint, dass sie in React (und Angular 2) wirklich dasselbe sind, und daher ist es sinnvoll, this
(oder $this
) zu verwenden. In Angular 1 sind sie nicht gleich und daher könnte $this
tatsächlich noch mehr Verwirrung stiften.
In Bezug auf die JavaScript-Seite ist es im ES5-Code sehr üblich, this wegen der Bindungsprobleme von this
beim Aufrufen freier Methoden als Alias für this
zu verwenden. Daher haben Controller immer noch oft so etwas wie var that = this
, in diesem Fall kann man auch var ctrl = this
verwenden.
Davon abgesehen ist es nicht erforderlich, dies in Ihren Controllern zu tun, wenn Sie dies nicht möchten. Es ist meiner Meinung nach vollkommen vernünftig, this
intern in einem Objekt zu verwenden, aber dann auf ein Objekt mit einem anderen Namen zu verweisen, wenn es von außen verwendet wird.
@dmitriz , Sie müssen nicht denselben Alias im Controller und in der Ansicht haben (das tue ich nie). Außerdem verwende ich immer var self = this
im Controller, um zu vermeiden, dass ich .bind(this)
für Rückrufe usw.
Das sollte also kein Problem sein, imo.
Zu anderen Optionen:
$ctx
: Das gefällt mir nicht, weil (wie @petebacondarwin erwähnte) der Controller nicht der Kontext der Ausdrücke ist.$this
: Das gefällt mir nicht, weil (in Winkelausdrücken) this
ein spezieller Alias für den aktuellen Geltungsbereich ist, also this --> scope
und $this --> controller
hat wäre noch verwirrender. (Ich hätte es mir anders gewünscht.)$vm
: Ich mag das nicht (aus bereits erwähnten Gründen), aber ich könnte damit gehen, wenn nichts Besseres unseren Einschränkungen entspricht.$cmp
: Nicht sehr zufriedenstellend (weil nicht 100% genau), aber aussagekräftig genug. Könnte damit gehen, wenn nichts Besseres unseren Einschränkungen entspricht.$comp
: Ich bevorzuge $cmp
, weil es kürzer ist (und ich finde es nicht "verwechselbarer" mit compare
als $comp
).$ctrl
: Das gefällt mir ziemlich gut. Es ist ziemlich kurz, deklarativ und so genau, wie es nur sein kann. Ich habe meinen Controllern immer ctrl
angehängt und ich habe nie eine Verwechslung mit ConTRoL
erlebt (aber sachkundigere Leute bestehen darauf, dass es Verwirrung gegeben hat :)). Wenn wir entscheiden, dass Verwirrung kein Problem ist, würde ich definitiv mit diesem gehen, aber ich bin mit etwas anderem einverstanden.$troll
: Ich muss noch etwas darüber nachdenken. Potenzial hat es auf jeden Fall :stuck_out_tongue:$as
, $at
, $cc
, $prox
, $vc
): Ich denke, sie führen neue Konzepte ein und es werden noch mehr sein verwirrend als hilfreich.Ich stimme für $ctrl
, weil es der Direktiven-Controller _ist_. Einfach.
Gegen die anderen:
$vm
-- Wie bereits erwähnt, ist dies keine erforderliche Verwendungsabsicht => entweder Verwirrung beim Lesen von Mustern/Codes oder weniger Auswahl für den Entwickler (erzwungen, vm zu implementieren)$cmp
-- Nun, es ist nicht die Komponente selbst, sondern (nur) der Controller? Also eigentlich irreführend?$this
-- Auch schon erwähnt, es ist verwirrend. Was macht die Controller-Instanz im Bereich "dies"? Semantisch sehe ich nicht, dass das ... na ja ... verständlich sein könnte?$ctx
-- Eigentlich dasselbe wie $this
.Auch wie Pascal schon sagte: Ich sehe keine Verwechslung mit Bedienelementen. Sofern Angular2 nicht alle DOM-/Eingabeelemente auf diese Weise einfügt (dh $ctrl, $val, $cmbx usw.), sehe ich darin kein Problem.
+1 $ctrl
In derselben Zeile wie vorherige Kommentare:
$vm
, $as
, $at
, $cc
, $prox
, $vc
, $ctx
,. ..: stellt Programmierern neue unnötige Konzepte vor$this
: Da this
bereits existiert, kann es für Programmierer verwirrend sein$cmp
oder $comp
: (besser zuerst) Es sollte nett sein, weil es Programmierer auf das Komponentenmodell konzentriert, aber sie sind möglicherweise nicht einfach$ctrl
: ist genau das, was im Geltungsbereich veröffentlicht wird, der Controller, also scheint es wirklich einfach zu verstehen und zu verwendenIch verstehe, danke für die Klarstellung, ich kannte this = $scope
nicht, aber ja, das schließt es aus.
Dann klingt $ctrl
nach der nächstbesten Wahl, abgesehen von $troll
also :)
+1 für $ctrl
: am intuitivsten und allgemeinsten
@petebacondarwin Danke für die Details.
Also +1 für $ctrl
.
Ich bevorzuge den deklarativen $ctrl
als Standardnamen.
@petebacondarwin @PascalPrecht
Warum ist VM keine gute Darstellung?
(Wenn Sie es bereits zu einem anderen Thema besprochen haben, verlinken Sie es einfach, wenn Sie können)
Denn AFAIK, Controller in Angular sind eher View Models als klassische Controller von MVC. aber vielleicht übersehe ich etwas.
Ich stimme den Punkten von @QuinntyneBrown zu -
es ist kürzer.
aber wichtiger -
Der Styleguide von @johnpapa ist sehr beliebt, und viele Leute, die ich kenne, beziehen sich darauf als Teil ihres Schulungsprogramms für „neue Entwickler“.
Wenn wir dies hier ändern, sollten wir die Auswirkungen auf neue Entwickler berücksichtigen (vielleicht eine PR zum Styleguide einreichen).
Deshalb mag ich den kürzeren "$vm"-Namen (Übrigens, warum muss er mit $
beginnen? :)
(Übrigens, warum muss es mit $ beginnen? :)
Winkeldefinierte Namen beginnen mit $
, wenn sie den Namensraum mit Programmiererdefinitionen teilen, wodurch Kollisionen vermieden werden. In diesem Fall wird es von Angular definiert und innerhalb des Bereichs definiert, in dem der Programmierer seine eigenen Definitionen haben kann. Durch die Verwendung $
vermeiden wir Namenskollisionen und Angular verhält sich konsequent so, wie Programmierer es erwarten.
(@johnpapa) Der Zweck dieses Styleguides ist es, eine Anleitung zum Erstellen von Angular-Anwendungen zu geben, indem er die Konventionen zeigt, die ich verwende, und, was noch wichtiger ist, warum ich sie wähle.
Stil Y032 Verwenden Sie hierfür eine Capture-Variable, wenn Sie die ControllerAs-Syntax verwenden. Wählen Sie einen konsistenten Variablennamen wie vm, was für ViewModel steht.
Es spielt also keine Rolle, ob es vm
, ctrl
oder troll
ist, es muss nur eine konsistente Variable sein.
Darüber hinaus sollen, wie bereits erwähnt, keine neuen Konzepte hinzugefügt werden: vm
steht für ViewModel
, wenn Sie View Models nicht verwenden oder nicht damit vertraut sind, werden Sie es nicht verstehen wofür vm
oder ViewModel
steht, was verwirrend sein wird.
Ich bin kein Fan von verwirrenden Namen. Ich denke, ctrl
ist verwirrend. Es ist Controller? Steuerung (wie HTML-Steuerung)? und ist das nicht für eine Komponente?
Ich stimme entweder für vm
oder comp
. vm
wird häufig verwendet und ist leicht zu erklären. comp
ist neu, aber nicht schwer zu erraten.
Wie wäre es mit $ctlr
(dh ConTroLleR) statt $ctrl
?
+1 $komp
@petebacondarwin Oh, die Menge an Dyslektikern (wie ich selbst), die uns mit diesbezüglichen Problemen bombardieren werden ... :)
@drpicox Danke für die Erklärung, ich sehe deine Punkte und sie sind gültig. Es ist eine schwierige Frage, aber ich kann zumindest aus meiner Erfahrung sagen, dass ich keine Probleme hatte, Entwicklern die "vm" -Konvention beizubringen, und einigen Unternehmen geholfen habe, ihre massive App auf diese Weise zu strukturieren. Sie haben es ziemlich schnell verstanden, aber vielleicht habe ich' Ich bin allein mit dieser Erfahrung.
Aber ich verstehe deine Punkte. stimme $ zu
Ich bin zwar immer noch für $vm, aber mit $comp bin ich auch einverstanden ...
@wesleycho vom Angular UI Bootstrap-Team scheint stark gegen vm
zu sein:
https://github.com/angular/angular.js/issues/10007#issuecomment -166707284
+1 für $ctrl
@shairez Ich teile deinen Standpunkt bezüglich einer Tagung voll und ganz, ich bin ein freiberuflicher Architekt mit Dutzenden von Projekten hinter mir, die vm
Tagung hat sehr geholfen, aber ich habe immer noch einige Probleme. Es stellt sich heraus, dass es Leute gibt, die sich dagegen wehren, es zu benutzen. Wahrscheinlich sollte der Widerstand geringer sein, wenn diese Konvention von Angular selbst stammt, aber ich bin sicher, dass sie es ohne Widerstand akzeptieren würden, wenn der Name $ctrl
wäre. $ctrl
ist einfach geradlinig.
Die Stimmen sind also drin und es sieht so aus:
$comp 4
$cmp 2
$ctrl 19
$vm 3
$this 3
$ctx 2
$vc 1
Der klare Favorit ist $ctrl
. Es ist nicht nur beliebt, sondern erfüllt auch die oben in dieser Ausgabe aufgeführten Kriterien. Außerdem führt es kein besonders neues Konzept ein. Das Ding, auf das verwiesen wird, ist wirklich ein Controller (ein Komponenten-/Direktiven-Controller), den Angular-Entwickler bereits verstehen, und so wie sich einige Entwickler daran gewöhnt haben, vm
in ihren Direktiven zu verwenden, wird es nicht lange dauern, bis Entwickler sich daran gewöhnen auf diese Vorgabe.
Großartig, $ctrl ist es!
$ctrl
benennenEin weiteres Anliegen, das ich ansprechen möchte, ist, dass wir in Angle 1.4 und niedriger "als Namen" nicht wirklich verwenden können, beginnend mit einem $
-Zeichen.
Es gibt den folgenden Fehler:
Error: [$controller:ctrlfmt] Badly formed controller string
Einige Unternehmen haben Probleme beim Upgrade auf die neuesten Versionen, und es kann mehrere Monate dauern.
Sie wollen dennoch mit den Konventionen Schritt halten, damit ihr Upgrade-Prozess in Zukunft einfacher wird.
Für sie ist der Wechsel von vm
zu $ctrl
unmöglich.
Was denken Sie? irgendwelche Vorschläge?
vielleicht in Phasen migrieren:
Beginnen Sie mit der Umwandlung vm
in ctrl
Wenn 1.5 veröffentlicht wird, "aktualisieren" Sie ctrl
auf $ctrl
Ein anderer möglicher Weg – obwohl ausführlich – besteht darin, den Aliasnamen controllerAs in der Laufzeit zu generieren und angular.version
zu überprüfen. etwas wie:
angular
.module('github')
.directive('issueThread', issueThread);
/* <strong i="14">@ngInject</strong> */
function issueThread () {
// this can be required as a module if using some module loader
// or - another way is using global on angular namespace (i know it a bad practice - hwoever just to indicate reuse of this check
let prefix = angular.version.minor === 5 ? '$' : '';
let controllerAs = prefix + 'ctrl';
// with template strings
var controllerAs = `${prefix}ctrl`;
var directive = {
controller: controller,
restrict: 'E'
};
return directive;
function controller() {
}
}
@orizens Was ist mit Vorlagen?
@shairez Uhmmm, es macht Sinn, $-Symbole sind nur für eckige Interna gedacht ... vielleicht ist es schön, eine Art Aufwärtskompatibilität im nächsten Minor zu haben.
@drpicox da hast du einen Punkt :).
Auch hier ist eine Lösung, die mir einfällt (hacky one ...), "ersetzen" Sie Strg durch $ Strg in der Vorlage in Runtime / Build. Dies kann leicht erreicht werden, wenn das Projekt mit es6 und Modulen erstellt wird. andernfalls ist es eine Aufgabe für gulp/grunt/npm zur Bauzeit.
Warum nicht einfach controllerAs
verwenden?
Es ist keine ideale Lösung (und tatsächlich müssen wir möglicherweise die RegExp überarbeiten, die die Kennung aus der Controller-Zeichenfolge extrahiert (falls vorhanden), aber die Verwendung controllerAs
ist sowohl rückwärts- als auch vorwärtskompatibel :)
(Wenn jemand versuchen möchte, diesen Bezeichner zu aktualisieren, der RegExp extrahiert, ist er übrigens genau dort .)
@gkalpak , das ist ein guter Punkt. Es ist gut, die Verwendung der Eigenschaft controllerAs
voranzutreiben, da immer mehr Leute auch dazu übergehen werden, Komponenten in ihren Versionen 1.4 und niedriger zu verwenden, glaube ich.
Aber ich denke, es könnte verwirrend sein, wenn wir anfangen, den Leuten $ctrl
, und in manchen Fällen funktioniert es und in manchen nicht.
Eine Aufwärtskompatibilität (nicht sicher wie) ist also eine großartige Idee!
@shairez hast du (kannst du) ein neues Problem erstellt, um dies zu verfolgen?
Ich habe #13736 erstellt, das $
als Bezeichner zulässt, wenn <ctrl> as <identifier>
verwendet wird.
Dennoch unterscheiden sich die zulässigen Bezeichner zwischen controller: '... as ...'
und controllerAs: '...'
.
Allerdings bin ich mir nicht sicher, ob die Werbung für controller: '... as $ctrl'
eine gute Möglichkeit ist, mit Konventionen Schritt zu halten. Es ist viel schwieriger, controller: '... as $ctrl'
zu aktualisieren als controller: '...', controllerAs: '$ctrl'
.
Danke @gkalpak - Ich stimme zu, dass wir wahrscheinlich die Verwendung der Eigenschaft controllerAs
anstelle des Controllers als Syntax fördern sollten.
Eine Sache ist: Die Dokumentation der Komponente sagt: "Komponentendefinitionen sind sehr einfach und erfordern nicht viel von der Komplexität hinter der Definition allgemeiner Anweisungen".
Eine andere: Controller in Direktive ist nur notwendig, wenn Sie komplexe Direktiven bauen, die miteinander sprechen. Andernfalls ist eine Link-Funktion mehr als genug (z. B. "Controller verwenden, wenn Sie eine API anderen Anweisungen aussetzen möchten. Andernfalls Link verwenden" in der Richtlinie des Entwicklerhandbuchs und meiner Erfahrung nach Richtlinien, die dieselbe Funktionalität mit Link anstelle von Controllern implementieren, die einige hundert Mal verwendet werden in ng-repeat sind viel schneller.
Damit...
Ich finde in Component ("einfache" Direktive) nicht den Weg, "einfach" (Link-Funktion) zu machen, nur den schweren (Controller).
Verpasse ich etwas?
Danke für die Erklärung.
@frfancha - die Leistungsverbesserung ist darauf zurückzuführen, dass $injector
nicht verwendet werden muss, um den Controller zu instanziieren, oder? Vielleicht haben Sie einige Leistungsmessungen, die Sie bereitstellen können?
Die Idee des Komponentenhelfers ist es, das Schreiben von Direktiven vom Komponententyp (isolate, element) einfacher (im Sinne von LOC) zu machen; und einfacher zu schreibender Code, der mehr in Einklang mit der Vorgehensweise in Angular 2 steht.
Wenn es in einer bestimmten App ein Leistungsproblem gibt, wäre es ziemlich einfach, eine Komponentendirektive umzuwandeln, um den allgemeineren directive
-Helfer zu verwenden.
Ich denke, wir müssen uns die anderen API-Dokumente und Entwicklerleitfäden ansehen, um sicherzustellen, dass sie mit dem neuen component()
-Hilfsprogramm übereinstimmen.
@petebacondarwin Am Anfang haben wir alle unsere Anweisungen mit Controller geschrieben, nur weil es im ersten Tutorial, dem wir gefolgt sind, so gezeigt wurde.
Erst nachdem wir festgestellt hatten, dass es ungefähr 15 Sekunden dauerte, eine bestimmte Seite mit 1000 Anweisungen (5 durch „Zeilen“ in ng-repeat x 200) zu „öffnen“, lasen wir mehr über Anweisungen und verstanden, dass Controller nutzlos sind, wenn Sie dies nicht tun. sprechen" zwischen Anweisungen (indem der Controller einer anderen angefordert wird). Nach dem "Umschreiben" aller mit Link-Funktionen anstelle von Controllern (Umschreiben ist ein großes Wort, da es nur das Kopieren/Einfügen des Codes in den Link anstelle des Controllers war), betrug die Zeit zum Anzeigen der Seite 8 Sekunden.
Beachten Sie, dass dies Firefox-Maßnahmen sind, zu diesem Zeitpunkt haben wir Chrome nicht verwendet. Jetzt verwenden wir es und ich schätze die Zeit in Chrome auf die dritte von Firefox (und die Speichernutzung auf die vierte (und ohne Speicherleck, was großartig ist, in Firefox ist unsere Anwendung bekanntermaßen "langsam am Nachmittag)).
Wir sind im Allgemeinen sehr zufrieden mit Angular (wir haben alle unsere Dateneingabeanwendungen von Smalltalk-Windows-Anwendung auf WEB API + Angular umgestellt (falls es Sie interessieren würde, es zu sehen?? Ich bin manchmal in London).
Aber ich bin überrascht von der Wahl des Controllers, um die "Simple Way"-to-Do-Direktive zu unterstützen
danke @gkalpak !
@petebacondarwin ein separates Problem ist nicht mehr relevant, oder? (Wegen PR)
Ich stimme zu (wie ich geschrieben habe), wir sollten die Leute dazu erziehen, die Eigenschaft controllerAs zu verwenden, aber ich habe es nur erwähnt, weil ich vorhersehe, dass Leute darauf stoßen werden.
Hilfreichster Kommentar
Die Stimmen sind also drin und es sieht so aus:
Der klare Favorit ist
$ctrl
. Es ist nicht nur beliebt, sondern erfüllt auch die oben in dieser Ausgabe aufgeführten Kriterien. Außerdem führt es kein besonders neues Konzept ein. Das Ding, auf das verwiesen wird, ist wirklich ein Controller (ein Komponenten-/Direktiven-Controller), den Angular-Entwickler bereits verstehen, und so wie sich einige Entwickler daran gewöhnt haben,vm
in ihren Direktiven zu verwenden, wird es nicht lange dauern, bis Entwickler sich daran gewöhnen auf diese Vorgabe.