我有一種感覺,我在這裏錯過了一些簡單的東西,但不能完全贊同這一點。這裏是我的腳本:爲什麼knockoutjs observableArray不會導致UI更新?
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());
,這裏是我的標記:
<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>
,這裏是一個的jsfiddle:http://jsfiddle.net/5xSmr/
預期的行爲是單擊「添加」會使UI更新。調試顯示addfield正在被調用。
希望我可以將兩者都標記爲答案。謝謝! – Daniel 2012-04-27 22:36:13
@Daniel我建議將此標記爲已批准的答案,因爲它提供了_why_的一個工作示例和解釋。 – Madbreaks 2017-03-24 18:17:43