Dov'è la separazione tra Presentazione e Logica nei framework MVC Javascript?

2

Avevo imparato che la seguente parte di codice è cattiva perché è un javascript ostruente e mescola la presentazione con la logica:

<a href="" onclick="archive()">archive</a>

La soluzione migliore era aggiungere una sorta di identificatore all'elemento link e quindi associarvi un evento su un file separato. Qualcosa tra quelle righe

$("#archive").click(function() {
    //do stuff
});

Vedi: Perché sta usando onclick () in html a cattive abitudini

Come mai adesso gran parte dei framework Javascripts MVC come Backbone.js, Angular.js, ecc. ora incoraggiano pezzi di codice come questo:

<a href="" ng-click="archive()">archive</a> 

Tratto da: link

Perché ora è ok?

    
posta Bernardo Pires 12.04.2013 - 22:41
fonte

2 risposte

1

Per essere onesti, lo considero brutto a causa del () che assomiglia troppo al codice eval'd.

Tuttavia, la ragione per cui è ancora "pulita" è che non si ha a che fare con una funzione globale o si è in grado / incoraggiati a inserire un codice arbitrario in quell'attributo. Invece si specifica che l'elemento utilizzerà il metodo con il nome specificato nel controller.

    
risposta data 12.04.2013 - 22:46
fonte
0

Non sono un esperto, ma suppongo che la risposta abbia a che fare con il fatto che non vuoi che il tuo modello di visualizzazione sappia qualcosa sulla vista. Backbone e Angular sono considerati framework MVVM, spesso utilizzando una sorta di pattern "command" in cui la vista più notifica alla VM che si è verificato un evento.

Non tutti i framework MVVM usano la stessa sintassi. Knockout "sembra" come se fosse un po 'più separato, anche se ha più o meno la stessa cosa degli altri framework .. link

    
risposta data 12.04.2013 - 22:50
fonte

Leggi altre domande sui tag