包含更多模型的Knockout映射模型

时间:2012-12-20 10:25:51

标签: javascript knockout.js

我有来自服务器的下一个数据,我想通过调用ko.mapping.fromJS(data,AcquisitionDetailsModel)将这些数据映射到我的模型;

通过检查AcquisitionDetailsModel,在调用指定的方法之后,我看到该模型包含acquisitions: Object[0]。为什么?我期待在我的模型中找到一系列的收购。我做错了什么?

data: Object
   acquisitions: Array[2]
   0: Object
      acquisition: Object
         date: "2012-06-20"
         __proto__: Object
      provider: Object
         id: "1"
         name: "Some name"
         __proto__: Object
     truck: Object
         mark: "DAF"
         model: "95FX"
         __proto__: Object
     __proto__: Object
  1: Object
  length: 2

模型看起来像这样:

function TruckModel() {
    this.mark = ko.observable("");
    this.model = ko.observable("");
}

function AcquisitionModel() {
    this.date = ko.observable("acquisition_date");
}

function ProviderModel() {
    this.id = null;
    this.name = ko.observable("name");
}

var AcquisitionDetailsModel = {
    acquisitions: ko.observableArray([{
        acquisition: new AcquisitionModel(),
        provider: new ProviderModel(),
        truck: new TruckModel()
    }])
}

1 个答案:

答案 0 :(得分:0)

实际上映射是正确的,但是我正在以错误的方式进行调试:)

ko.mapping.fromJS(data, AcquisitionDetailsModel);之后,如果我致电AcquisitionDetailsModel.acquisitions(),我可以看到我的数据。

此外,通过致电AcquisitionDetailsModel.acquisitions()[0].truck.model()我仍然可以看到正确的数据。

愚蠢的我:)。