我正在学习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/
答案 0 :(得分:5)
您的代码存在一些问题。
ko.toJSON()
,而非ko.ToJSON()
(请参阅documentation)。this.self = this
应为var self = this
- 您无需引入self
作为财产。self
而不是this
,因为this
可能指向不同的对象,而不是视图模型本身。newUser().property
中的data-bind
代替newUser.property
。HERE 是修改后的代码。