求助:无法在屏幕上重新加载从Ajax调用中获取的对象

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

我用UserModel创建对象,然后当Ajax成功响应时,调用Transform方法。我在document.onReady中调用了ko.applyBindings(新的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("");
}

感谢你的帮助!

i recommend you to understand java script's prototyping. please have a look at this code. you have to initiate userModel first properly.

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("");
}

This is a lot of repeating yourself. Instead just do this:

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

Then just create a new UserModel with JSON data:

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

No need for a transform function.