Ich habe eine einfache Frage nach dem Lesen der Post unten und arbeiten seit einiger Zeit auf eckigen js.Modellobjekte in Controllern ändern, um DOM zu manipulieren - eckige js - Best Practices?
der Beitrag: no dom manipulation from angular js controllers
der betreffende Punkt (von der Post): -Controller verwenden Sie nicht zu
DOM manipuliere - Controller sollten nur Geschäftslogik enthalten. Wenn Sie eine Präsentationslogik in Controller einfügen, wirkt sich dies erheblich auf die Testbarkeit aus. Angular verfügt für die meisten Fälle und Direktiven über Databinding, um manuelle DOM-Manipulation einzukapseln.
die Frage: Wenn ich einen einfachen Winkel App habe und auf einer Schaltfläche klicken i eine Funktion von meinem Controller nennt. In dieser Funktion möchte ich eine einfache Geschäftslogik machen und abhängig von dieser Geschäftslogikausgabe möchte ich eine Schaltfläche verbergen/anzeigen.
Was ist der beste Weg, es zu tun.
Meine heutige Art und Weise, dies zu tun ist: PLUNKER EXAMPLE (nicht so Sachen zu tun, das Gesetz in der Winkel js Reich bricht, ist, dass gegen Tests bitte korrigieren Sie mich.?)
Was Sie tun, ist in Ordnung. Sie möchten Code wie 'if ($ scope.isAdmin) $ ('# password'). Show();' in Ihrem Controller vermeiden. – dave
Ich würde die Reset-Button-Logik in eine Funktion im Bereich der Steuerung verschieben, um es einfacher zu testen, wie Sie mit checkLoginName haben. Sonst sieht es gut aus. – tasseKATT
Danke, aber würde das nicht reduzieren Lesbarkeit wie jquery.i bedeuten, dass einige Funktion aufgerufen wird und einige Modell ändert sich (was unvermeidlich ist) und dann plötzlich einige Div/Schaltfläche verschwindet. Ich meine, ich bin völlig in Ordnung mit der Art, wie ich es getan habe und diese Zweifel vergessen – ankur