Ho la sensazione che mi manchi qualcosa di semplice qui, ma non riesco proprio a ingannare questo. Ecco il mio script:Perché questo osservabile knockoutjsArray non causa l'aggiornamento dell'interfaccia utente?
function FormDefinition()
{
var self = this;
self.Fields = ko.observableArray([new FieldDefinition()]);
}
function FieldDefinition()
{
var self = this;
self.Name = "Test";
}
function ViewModel()
{
var self = this;
self.formDef = ko.observable(new FormDefinition());
self.Name = "bob"
self.addField = function(){
this.formDef().Fields().push(new FieldDefinition());
}
}
ko.applyBindings(new ViewModel());
ed ecco la mia marcatura:
<a data-bind="click: addField">Add</a><br/>
<span data-bind="text: Name"></span>
<ul data-bind="foreach: formDef().Fields">
<li data-bind="text: Name"></li>
</ul>
ed ecco un jsFiddle: http://jsfiddle.net/5xSmr/
comportamento previsto è che cliccando su 'Aggiungi' causerebbe l'interfaccia utente per l'aggiornamento . il debug rivela che l'addfield viene chiamato.
Vorrei poter contrassegnare entrambi come risposta. Grazie! – Daniel
@Daniel Consiglierei di contrassegnarlo come la risposta approvata, in quanto fornisce sia un esempio funzionante che una spiegazione di _why_. – Madbreaks