2012-01-06 46 views
3

我正在學習Knockout JS(真棒框架!順便說一句,我來自Silverlight,MVVM powa),我想我阻止了一件簡單的事情。Knockout JS - 序列化JSON的類

我有一個類User這樣的:

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

而一個視圖模型是這樣的:

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/

回答

5

有幾個問題與您的代碼。

  • 的方法被稱爲ko.toJSON()和不ko.ToJSON()(見documentation)。
  • this.self = this應該是var self = this - 你不需要引入self作爲財產。
  • 最佳做法是始終在視圖模型的方法中使用self而不是,因爲this可能指向不同的對象而不是視圖模型本身。
  • 如果要將用戶的觀測值映射到輸入,請在data-bind中使用newUser().property而不是newUser.property

HERE修改後的代碼。

+0

I.L.O.V.E.Y.O.U – Guillaume 2012-01-06 18:21:18

+0

rg701653很高興爲您提供幫助。我會盡量不讓你傷心:P。 – kubetz 2012-01-06 19:07:15