MVC Best practice che mescola Vista parziale e JavaScript

0

Ho cercato su Internet e non riesco davvero a trovare una buona risposta a questa domanda.

Immagina che ci sia una vista che contiene un semplice elemento tab. Ogni contenuto della scheda viene caricato dinamicamente (tramite ajax) quando si fa clic sull'intestazione delle schede. La vista stessa ha il documento. Già-gestore di fare cose quando viene caricata la vista (non parziale). (ad esempio, avvia il modulo JavaScript javascript).

Un partial contiene un elenco di elementi che possono essere cancellati. Facendo clic sul pulsante Elimina dovrebbe aprire una finestra di dialogo modale per consentire all'utente di confermare l'eliminazione.

Quale sarebbe il modo migliore per gestirlo?

La vista non conosce il partial che è stato caricato e viceversa.

La vista ha una sorta di modulo che avrà una funzione

deleteElement (id) {// ...} Come dovrebbe essere chiamato da dentro il parziale?

Il parziale dovrebbe essere informato su deleteElement? Cosa succede se viene chiamato all'interno di un'altra vista quale modulo non ha tale funzione?

L'elemento delete dovrebbe essere dichiarato globale? Ha senso quando è necessario solo in un contesto specifico?

Oppure l'idea di dividere in singoli moduli javascript per View è già la decisione sbagliata che ho preso? (Il mio pensiero era di mantenere un singolo file .js che viene caricato solo quando veramente necessario, mantenere il codice pulito, la separazione delle preoccupazioni, ...)

Qualsiasi link, suggerimento, soluzione alternativa o idea sarebbe molto apprezzato.

    
posta KingKerosin 22.10.2015 - 15:40
fonte

1 risposta

2

Soluzione pratica:

Jquery e altri framework ti permetteranno di associare ad eventi per i quali l'elemento che li ha lanciati non è ancora stato caricato.

Quindi la tua vista, o modulo js o qualsiasi altra cosa, può collegarsi all'evento deleteButton.Click anche se non ci sono pulsanti di cancellazione ancora caricati sulla pagina.

Pensieri filosofici:

Quando inizi a creare app a una sola pagina con molta logica JavaScript, ritengo che tu debba spostare la tua percezione dal punto di vista del lato server del sito web, essendo l''app' di JavaScript sia l'app che il server un servizio che l'app può chiamare.

Questa vista ti aiuta a risolvere questo tipo di domande "dove dovrei mettere X", la "vista" diventa un ViewModel dal punto di vista del codice JavaScript. Che ti porta in modo logico a renderlo JSON e che il JS aggiorna l'HTML con una sorta di modello.

Una volta arrivato a questo punto, potresti anche iniziare a usare una struttura angolare per eseguire il template e il binding, il che ti offre una chiara separazione delle preoccupazioni.

L'altro punto di vista credo sarebbe quello di mantenere il JavaScript come una cosa decorativa. Questo lo mantiene saldamente nella vista, ma la pagina dovrebbe funzionare ugualmente bene con JavaScript disattivato. Quale il tuo caricamento dinamico delle schede non farebbe.

    
risposta data 22.10.2015 - 16:04
fonte