javascript – 为什么这个knockoutjs observableArray不会导致UI更新?

前端之家收集整理的这篇文章主要介绍了javascript – 为什么这个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正在被调用.

解决方法

修正你的小提琴: http://jsfiddle.net/5xSmr/2/

主要的问题是你正在调用Fields()而不是Fields. Fields()返回未包装的数组,直接推送它,ko将永远不会知道它.

原文链接:https://www.f2er.com/js/154212.html

猜你在找的JavaScript相关文章