KO viewmodel的属性可用,但viewmodel本身为空

时间:2015-11-23 05:39:28

标签: post knockout.js viewmodel

我在html页面上绑定了一个用于提交表单的viewmodel。

当我提交表单时,viewmodel本身将显示为空,但视图模型中的可观察项目已填充。

因此我无法将viewmodel发布到服务器,因为它将显示为null。

请帮忙!

我的HTML:

<p>First name:<input data-bind='value: firstName' /></p>
<p>Last name:<input data-bind='value: lastName' /></p>   
<p><button data-bind='click: saveUserData'>Submit</button></p>

我的剧本:

function PersonViewModel() {
    var self = this;
    this.firstName = ko.observable();
    this.lastName = ko.observable();
    this.saveUserData = function () {
        alert(ko.toJSON(self)); // alerts '{}' i.e. nothing
        alert(ko.toJSON(self.firstName())); // alerts value of the firsTname
        //do the post here
    };
};

ko.applyBindings(new PersonViewModel());

1 个答案:

答案 0 :(得分:0)

我找到了这个问题的根源,并在此处发布解决方案,以便在遇到类似问题时对任何人都有帮助。

解决方案:文档准备好后执行绑定( applyBindings 函数调用)。即,

  

$(document).ready(function(){           ko.applyBindings(new PersonViewModel());       });

谢谢!