【问题标题】:Knockout JS - Serialize a Class to JSONKnockout JS - 将类序列化为 JSON
【发布时间】:2012-02-04 05:27:12
【问题描述】:

我正在学习 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();
};

还有这样的 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 似乎不起作用。我尝试了几种方法,但都没有得到预期的结果。

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

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

【问题讨论】:

    标签: json serialization knockout.js


    【解决方案1】:

    您的代码有几个问题。

    • 该方法称为ko.toJSON() 而不是ko.ToJSON()(请参阅documentation)。
    • this.self = this 应该是 var self = this - 你不需要引入 self 作为属性。
    • 最佳做法是在视图模型的方法中始终使用self 而不是this,因为this 可能指向不同的对象而不是视图模型本身。
    • 如果您想将用户的 observables 映射到输入,请在 data-bind 中使用 newUser().property 而不是 newUser.property

    HERE是修改后的代码。

    【讨论】:

    • rg701653 很高兴为您提供帮助。我会尽量不伤你的心:P。
    猜你喜欢
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 2021-12-18
    • 2020-11-01
    相关资源
    最近更新 更多