Knockout JS ASP.NET MVC C#Model Make Observable

时间:2013-06-26 19:09:21

标签: asp.net-mvc knockout.js model

我有一个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());

1 个答案:

答案 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);
    });
};

我希望它有所帮助。