我有一个JSON模型列表,我通过AJAX从服务器接收。
我也不想将我的模型重新定义为JavaScript中的函数。
如何防止必须在下面进行?我仍然希望所有的模型属性都能被观察到。
function Car(car) {
this.Name = ko.observable(car.Name);
this.Type = ko.observable(car.Type);
this.Rating = ko.observable(car.Rating);
this.Color = ko.observable(car.Color);
}
var ViewModel = function () {
var self = this;
self.cars = ko.observableArray([]);
$.post('/car/getall', function (cars) {
var carsKO= [];
$.each(cars, function (i, elm) {
carsKO.push(new Car(elm));
});
self.cars(carsKO);
});
};
ko.applyBindings(new ViewModel());
人们在谈论Knockout Mapping插件。但是我没有看到这会让我与下面有什么不同?在这一点上,我不会观察到模型属性。
var ViewModel = function () {
var self = this;
self.cars = ko.observableArray([]);
$.post('/car/getall', function (cars) {
self.cars(cars);
});
};
ko.applyBindings(new ViewModel());
答案 0 :(得分:2)
您应该使用ko.mapping的fromJS函数,如下所示:
var ViewModel = function () {
var self = this;
self.cars = ko.observableArray([]);
$.post('/car/getall', function (cars) {
ko.mapping.fromJS(cars, {}, self.cars);
});
};
我希望它有所帮助。