Ho visto 2 diversi approcci con MVC sul Web.
Uno, come in ExtJS, è quello di associare i callback alla vista tramite il controller. Individuazione di ogni elemento nella vista e aggiunta della funzionalità.
L'altro, come in angular.js e nel framework di sollevamento, è quello di legare le viste e solo scrivere la funzionalità nel controller.
Quale è meglio e più pulito?
L'approccio di ExtJS ha visioni stupide e tutta la logica del controller che mi sembra pulita. Ho avuto problemi con gli ID globali per gli elementi della GUI o la navigazione relativa agli elementi della GUI in questo approccio. Quando ho cambiato la vista, il controller non ha trovato più i pulsanti o ho avuto più istanze di un pulsante con lo stesso ID su una singola applicazione, a causa dell'ID globale.
Ma ho risolto questo problema con ID che sono solo globali in una vista e possono essere presenti più volte nell'applicazione. Quindi potrei fare confusione con il layout e il design delle viste (stupide) e la funzionalità non si romperebbe.
L'approccio angular.js con i collegamenti nella vista non ha il problema con gli ID globali. Inoltre, la persona che cambia qualcosa nel layout della vista deve comunque conoscere gli ID, in modo che il controller possa inserire i dati nel punto giusto.
Quindi se scrivo
<a ng-click="doThis()" />
per angular.js e implementa doThis()
o
<a lid="buttonwhichdoesthis" />
per extjs e trova l'elemento con l'id locale e aggiungi doThis()
come gestore sul lato controller, sembra non essere così diverso.
L'unica cosa è che il secondo ha un altro strato di riferimento indiretto, che sembra più pulito.
Il primo sembra meno sforzo.