0

Ich habe nach dem besten Weg gesucht, um Modale in eckigen umzugehen und ich habe den Eindruck, dass sie von Controllern getrennt werden müssen, um zu erreichen Trennung von Bedenken in MVC. Allerdings, wenn es darum geht, dies mit einer Direktive oder einer Bibliothek zu implementieren, sehe ich nicht die Notwendigkeit für solch massiven Aufwand, so viel Code hinzuzufügen. Effektiv scheint es, als ob sie genau das Gleiche tun, aber mit mehr Anrufen und Veranstaltungen im Vergleich Auftakt, um direkt ein Bootstrap-modal in der Steuerung oder Dienst zeigt mit jQuery so einfach wie:Anzeigen Modals: Angular Direktive/Bibliotheken VS direkte native jQuery/Bootstrap Aufrufe

$scope.saveChanges = function() { 
     $('#messageTitle').text('Done'); 
     $('#messageText').text('Changes have been saved.'); 
     $('#message').modal() 
    } 

eine Richtlinie Portieren zu handle der Dialog zeigt in der Tat das Modal mit zusätzlichen Schritten und Setups zwischen Abhängigkeiten etc. in eckigen, externen Bibliotheken und/oder benutzerdefiniertem Code (wie auch immer es angewendet wird). Es ist wirklich so, als hätte man einen vereinfachten Methodenaufruf zu einer Utilities-Methode in einer Datei von utils, die nur das Modal mit jQuery anzeigt. Wieder würde ich erleuchtet sein, um zu wissen, warum dies nicht der Fall ist, den ich von erfahreneren kantigen Experten erwarte.

Abgesehen von der Tatsache, dass ein korrekter Arbeitsmodus angenommen wird, gibt es einen Grund, warum das DOM nicht in einem Controller referenziert werden sollte. Könnte es Auswirkungen auf Dinge wie Leistung, fehlerhaften Code, Tests usw. haben?

Ich weiß, dass, weil es Testfälle einfacher macht, einer der Gründe ist. Nochmals, ein stichhaltiger Grund ist jedoch, dass Testen kein großes Problem ist, wenn das DOM in der Geschäftslogik wie im obigen Code getestet wird. Wenn es noch dringlichere Fälle dafür gibt, was sind sie? Was ist der beste und effizienteste Weg, um eine Trennung des DOM von Controllern/Diensten zu erreichen, wenn dies auch für Dienste gilt?

Hintergrund in aktuelle Erklärungen:

What's the correct way to trigger jQuery DOM Manipulation from within a controller?

Separating DOM manipulation from Angular controllers - Best Practice wanted

AngularJS - why manipulating DOM in controller is a bad thing?

Why is it considered a bad idea to manipulate DOM in controllers?

Antwort

0

Von meinem Verständnis, das sind die wichtigsten Gründe, warum ein Controller sollte nicht das DOM manipulieren :

  • Testen. Testfälle oder Testschritte können gut strukturiert und sehr leicht testbar sein, wenn Logik in Steuerungen getestet wird. Hier wird wirklich getestet, wofür ein Controller verantwortlich sein sollte (Modellmanipulation).

  • Anwendung von gut strukturiertem MVC-Code an der Winkelcodebasis. Die Trennung von Problemen gibt wieder einen Pluspunkt für das Testen, macht den Code aber übersichtlicher und übersichtlicher.

Ich würde gerne detailliertere alternative Antworten zu hören, vollständig zu bestätigen und erklären, dass jede DOM-Manipulation, was so überhaupt eine schlechte Sache in einem Controller ist. Im Gegenteil, es wäre interessant zu wissen, ob es Ausnahmen gibt. Für die Information anderer und meinen Versuch zu antworten, sind die oben genannten Gründe die bekanntesten Gründe und somit wahrscheinlich die einzigen Gründe meines Wissens, die an dieser Stelle annehmbare Gründe sind.