我有一個我通過AJAX從服務器接收到的JSON模型列表。Knockout JS ASP.NET MVC C#Model Make Observable
我不想在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());
在你的例子中,我沒有看到ko.mapping插件的用法...我想你想寫道:'$ .post('/ car/getall',函數(汽車){ ko.mapping .fromJS(cars,{},self.cars); });'... – nemesv
不要調用陣列上的映射插件。循環調用映射插件的數組並將其推送到您的observableArray。目前還沒有內置的解決方案。但是,如果您不關心除物理收集本身以外的其他值,則根本不需要觀察這些屬性。 –