Knockout JS - 将类序列化为JSON

3

我是一名学习Knockout JS(非常棒的框架!顺便说一下,我来自Silverlight,MVVM强大)的人,但我认为我在一个简单的问题上遇到了阻碍。

我有一个类User,如下所示:

var User = function () {
    this.Login = ko.observable();
    this.FirstName = ko.observable();
    this.LastName = ko.observable();
    this.Password = ko.observable();
    this.Email = ko.observable();
};

一个这样的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()));
    };
};

在HTML中,我有一个简单的表单与“newUser”属性绑定。当我提交表单时,我想将该属性序列化为JSON,并将其传递给WCF服务。但是,ko.ToJSON似乎不起作用。我尝试了几种方法,但没有得到我期望的结果。
所以,我的问题是:如何将我的用户属性序列化为JSON?
这里有一个JSFiddle来重现它:http://jsfiddle.net/ZfSbR/5/
1个回答

5
您的代码存在几个问题:
  • 该方法应称为ko.toJSON()而非ko.ToJSON()(请参阅文档)。
  • this.self = this 应改为 var self = this - 您不需要将self引入为属性。
  • 最佳实践是在视图模型的方法中始终使用self而不是this,因为this可能指向不同的对象而不是视图模型本身。
  • 如果您想将用户的observables映射到输入中,请在data-bind中使用newUser().property而不是newUser.property

此处为修改后的代码。


rg701653 很高兴能够帮助你。我会尽力不让你失望的 :P。 - kubetz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接