我正在尝试加载一个对象,其中包含从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.