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?