1

我正在尝试使用从 AJAX 调用中检索到的一些信息加载一个对象。问题是,我似乎无法在屏幕上重新加载它,尽管代码没有显示错误。

我用 a 创建我的对象UserModel,然后,当 AJAX 成功响应时,我调用 transform 方法。我在document.onReady通话ko.applyBindings(new UserModel())中。

function transform(text){
    var user = JSON.parse(text);
    UserModel.firstName=user.firstName;
    UserModel.lastName=user.lastName;
    UserModel.email = user.email;
    var dateFormat=new Date(user.dob);
    var dateFormatted = dateFormat.getMonth()+1 + "/" + dateFormat.getDay() + "/" +     dateFormat.getFullYear();
    UserModel.dob = dateFormatted;
    UserModel.address1=user.address1;
    UserModel.address2=user.address2;
    UserModel.state=user.state;
    UserModel.city=user.city;
    UserModel.country=user.country;
}

function UserModel(){
    this.firstName=ko.observable("");
    this.lastName=ko.observable("");
    this.email=ko.observable("");
    this.dob=ko.observable("");
    this.address1=ko.observable("");
    this.address2=ko.observable("");
    this.country = ko.observable("");
    this.city=ko.observable("");
    this.state=ko.observable("");
}

谢谢你的帮助!

4

2 回答 2

1

我建议您了解 java 脚本的原型设计。请看一下这段代码。您必须先正确启动 userModel。

function transform(text){
    var user = JSON.parse(text);
    userModel=new UserModel();
    userModel.firstName(user.firstName);
    userModel.lastName(user.lastName);
    userModel.email (user.email);
    var dateFormat=new Date(user.dob);
    var dateFormatted = dateFormat.getMonth()+1 + "/" + dateFormat.getDay() + "/" +     dateFormat.getFullYear();
    userModel.dob( dateFormatted);
    userModel.address1(user.address1);
    userModel.address2(user.address2);
    userModel.state(user.state);
    userModel.city(user.city);
    userModel.country(user.country);
    // now user userModel wherever you want like userModel.firstName()
}

function UserModel(){
    this.firstName=ko.observable("");
    this.lastName=ko.observable("");
    this.email=ko.observable("");
    this.dob=ko.observable("");
    this.address1=ko.observable("");
    this.address2=ko.observable("");
    this.country = ko.observable("");
    this.city=ko.observable("");
    this.state=ko.observable("");
}
于 2013-09-14T21:51:39.797 回答
-1

这是很多重复自己的事情。而是这样做:

function UserModel (data) {
    var self = this;
    data = data || {};
    self.firstName = ko.observable(data.firstName);
    self.lastName = ko.observable(data.lastName);
    // and so on
}

然后只需使用 JSON 数据创建一个新的 UserModel:

var user = new UserModel(JSON.parse(text));

不需要转换功能。

于 2013-09-15T02:42:15.930 回答