I'm getting this kind of data from the server
{
FirmName: "Firm Name",
Address: "123 Address",
AltNames: [
"First Alt Name",
"Second Alt Name"
]
}
I'm using knockout mappings plugin to map the data to a viewModel with ko.mapping.fromJS(data, {}, this);
However, anytime I change any string array element, my changes are not propagated to the viewModel. What do I do to fix the problem?
My js:
function firmModel() {
//this is what I get from the server
var data = {
FirmName: "Firm Name",
Address: "123 Address",
AltNames: [
"First Alt Name",
"Second Alt Name"
]
};
ko.mapping.fromJS(data, {}, this);
}
var em = new firmModel();
ko.applyBindings(firmModel);
My html:
<div>
<label>Company</label>
<input type="text" data-bind="value: FirmName">
</div>
<div>
<label>Address</label>
<input type="text" data-bind="value: Address">
</div>
<br>
<h3>
Alt Names
</h3>
<ul data-bind="foreach: AltNames">
<li>
<input type="text" data-bind="value: $data">
</li>
</ul>
<br/><br/>
<h2>
Result of the changes where I see whether viewModel picks up my changes above
</h2>
<span>Company: </span><span data-bind="text: FirmName"></span><br/>
<span>Address: </span><span data-bind="text: Address"></span><br/>
<br/>
Alt Names: <br/>
<ul data-bind="foreach: AltNames">
<li data-bind="text: $data"></li>
</ul>