VladN
VladN

Reputation: 739

Knockout mapping model that contains more models

I have the next data coming from the server and I want to map this data to my model by calling ko.mapping.fromJS(data, AcquisitionDetailsModel);

By inspecting the AcquisitionDetailsModel, after calling the specified method, I see that the model contains acquisitions: Object[0]. Why? I was expecting to find the array of acquisitions inside my model. What I'm doing wrong?

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

The models are looking like this:

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()
    }])
}

Upvotes: 0

Views: 112

Answers (1)

VladN
VladN

Reputation: 739

Actually the mapping was done right but it was me who was doing debugging in the wrong way :)

After ko.mapping.fromJS(data, AcquisitionDetailsModel); if I call AcquisitionDetailsModel.acquisitions() I can see my data.

Also, by calling AcquisitionDetailsModel.acquisitions()[0].truck.model() I still can see the right data.

Stupid me :)

Upvotes: 0

Related Questions