XeroxDucati
XeroxDucati

Reputation: 5200

Knockout.JS Mapping returning an empty array?

I've been scratching my head with this for the last day.. hope someone can shed some light. I have a simple javascript object -- data -- JSON.stringify(data) returns it like this;

{
    "dataList": [
        {
            "Id": 0,
            "Name": "0",
        },
        {
            "Id": 1,
            "Name": "1",
        }
    ]
}

I also have a really simple knockout viewmodel;

var viewModel = {
            dataList: ko.observableArray([])
        };

I then do a simple knockout.JS mapping call as per the doc site;

ko.mapping.fromJS(data, viewModel);

I would expect my viewModel to now have a dataList member (it does) that is an array of 2 (it isn't!). Instead I get an empty array.. What am I missing in the mapping here??

Upvotes: 0

Views: 958

Answers (1)

Tuan
Tuan

Reputation: 5412

You shouldn't need to define the properties on your viewModel object; the mapping plugin will create them for you. Just declare viewModel as such:

var viewModel = ko.mapping.fromJS(data);

http://jsfiddle.net/vqaVT/

You only need to make the other call, ko.mapping.fromJS(data, viewModel), when you need to update your viewModel with updated data from the server.

Upvotes: 2

Related Questions