Tôi có cảm giác mình thiếu một cái gì đó đơn giản ở đây, nhưng không thể hoàn toàn lúng túng điều này. Đây là kịch bản của tôi:Tại sao knockoutjs observableArray này không gây ra cập nhật giao diện người dùng?
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());
và đây là đánh dấu của tôi:
<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>
và đây là một jsFiddle: http://jsfiddle.net/5xSmr/
hành vi dự kiến là cách nhấp vào 'Add' sẽ gây ra ui để cập nhật . gỡ lỗi cho thấy rằng addfield đang được gọi.
Chúc tôi có thể đánh dấu cả hai là câu trả lời. Cảm ơn! – Daniel
@Daniel Tôi khuyên bạn nên đánh dấu câu trả lời này là câu trả lời được phê duyệt vì nó cung cấp cả ví dụ làm việc và giải thích về _why_. – Madbreaks