Angular è il giocatore più impressionante che ho visto per due vie databinding. È possibile utilizzare semplici oggetti JavaScript vecchi, collegarli a un oggetto ambito angolare e quindi associare l'ambito a una sezione del DOM. Ecco un esempio per Angular 0.9. (Angolare 1.0 utilizza un API molto diverso per ottenere la stessa cosa.)
// angular.compile() returns a databinding function
var databind = angular.compile(document.documentElement);
var model = angular.scope();
// add data to the scope object
model.greeting = "Hello, World!";
model.colors = ["red", "green", "blue"];
// hook 'em up
databind(model);
È possibile utilizzare espressioni angolari in HTML per l'associazione dati, tra cui i controlli dei moduli.
<!DOCTYPE html>
<input name="greeting" />
<span ng:repeat="color in colors" style="color: {{color}}">
{{color}}
</span>
In questo caso, la proprietà di saluto degli oggetti scope viene aggiornato con ogni battitura nella casella di testo.
Oppure, se non si desidera utilizzare le espressioni di associazione dati nel codice HTML, è possibile eseguire tutto manualmente.
model.$watch("greeting", function (value) {
// when the greeting changes, update the DOM
$("input[name=greeting]").val(value);
});
Poi ogni volta che si aggiorna l'oggetto ambito e chiamata $ eval(), se qualcosa è cambiato, saranno informati gli ascoltatori.
model.greeting = "Hi.";
model.$eval();
E la parte migliore è che si possono apportare modifiche a nulla attaccati al campo di applicazione, chiamare il suo metodo $ eval(), e il codice HTML aggiorna automaticamente.
model.colors.append("yellow");
model.colors.sort();
model.$eval(); // notifies listeners, including bound HTML
Knockout JS è inferiore perché invece di lavorare con semplici oggetti JavaScript, gli array, stringhe e numeri, è necessario creare le istanze dei suoi Observable
e ObservableArray
classi per fare l'associazione dati.
Divertiti!
Continua a lavorare su quell'uomo. Molto leggero rispetto ad altri binding di dati che ho visto. E più chiaro. – stringparser
@phoenix, grazie! Abbiamo appena lanciato il progetto in Beta. Molto felice di vedere che ti piace. – tjscience