Reputation: 3901
I have an array coming back from an ajax request. I bind this array to an observableArray in knockout. I would like to know how I can iterate over the array prefixeData
and make each of the element's properties observable. Is this possible?
var viewModel = {
name: "Editor",
prefixeData: ko.observableArray([]),
getPrefixes: function (prefix) {
var params = {
"prefix": prefix
};
$.ajax({
type: "POST",
url: "XXXX.aspx/GetPrefixes",
data: JSON.stringify(params),
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (data) {
var trans = data.d;
if (trans.Successful) {
viewModel.prefixeData(trans.ResultObject);
// this doesnt work
viewModel.prefixeData().forEach(function(data) {
data.LevelName=ko.observable(data.LevelName);
});
} else {
//todo
}
},
error: function (xhr, textStatus, err) {
alert("Status: " + textStatus); alert("Error: " + err);
}
});
}
};
Upvotes: 0
Views: 121
Reputation: 1899
u need import knockout.mapping knockout.mapping
and edit your code like:
success: function (data) {
var trans = data.d;
if (trans.Successful) {
var observableArray = ko.mapping.fromJS(trans.ResultObject);
viewModel.prefixeData(observableArray());
//viewModel.prefixeData now is observableArray, you can call foreach : viewModel.prefixeData at html
} else {
//todo
}
},
Upvotes: 1