Knockout JS - 将类序列化为JSON

Gui*_*ume 3 serialization json knockout.js

我正在学习Knockout JS(非常棒的框架!顺便说一句,我来自Silverlight,MVVM powa),我认为我阻止了一件简单的事情.

我有一个User这样的课:

var User = function () {
    this.Login = ko.observable();
    this.FirstName = ko.observable();
    this.LastName = ko.observable();
    this.Password = ko.observable();
    this.Email = ko.observable();
};
Run Code Online (Sandbox Code Playgroud)

像这样的ViewModel:

var UsersPage = function () {
    /*
    * Properties
    */
    this.self = this;
    this.users = ko.observableArray([new User()]);
    this.newUser = ko.observable(new User());

    /*
    * Methods
    */
    this.saveUser = function () {
        alert(ko.ToJSON(this.newUser()));
    };
};
Run Code Online (Sandbox Code Playgroud)

在HTML中,我有一个绑定到"newUser"属性的简单表单.当我提交表单时,我想在JSON中序列化属性以将其传递给WCF服务.这ko.ToJSON似乎不起作用.我尝试了几种方法,但我没有得到我期望的结果.

所以,我的问题是:如何将我的User属性序列化为JSON?

这是一个重现它的JSFiddle:http://jsfiddle.net/ZfSbR/5/

kub*_*etz 5

您的代码有几个问题.

  • 调用该方法ko.toJSON()而不是ko.ToJSON()(参见文档).
  • this.self = this应该var self = this- 你不需要self作为财产介绍.
  • 最佳实践是始终使用self而不是this视图模型的方法,因为this可能指向不同的对象而不是视图模型本身.
  • 如果你想映射从用户输入可观察,使用newUser().propertydata-bind替代newUser.property.

是修改后的代码.