I have an array called simpleSearchResultsArray in main viewModel -QuoteSimpleSearchVM.
The array simpleSearchResultsArray contains SimpleSearchResults objects.
Inside each SimpleSearchResults there is an object called quoteDetailsObj defined. The data is added to the quoteDetailsObj. And the object quoteDetailsObj is bound to the view. I am not able to bind this nested array viewmodel to the view. Here is the link for the jsfiddle: http://jsfiddle.net/FENuV/29/
View code:
<div id="QdetailsDiv">
<div>
<div>
<div><span>Sold to Account</span></div>
<div>
<input type="text" id="txtSoldToAccount" data-bind="value:SoldToAccount"/>
</div>
</div>
<div>
<div><span>Job Name</span></div>
<div>
<input type="text" id="txtQDJobName" data-bind="value:jobName"/></div>
</div>
</div>
<input type="button" value="unbind" id="unbindbutton"></input>
</div>
ViewModel code:
QuoteDetails = function () {
var self = this;
self.SoldToAccount = ko.observable();
self.jobName = ko.observable();
};
function SimpleSearchResults() {
var self = this;
self.index = ko.observable();
self.quoteDetailsObj= null;
self.BindDataToQuotesDetailVM = function (SimpleSearchResultsObj) {
SimpleSearchResultsObj.quoteDetailsObj = ko.observable(new QuoteDetails());
SimpleSearchResultsObj.quoteDetailsObj.SoldToAccount = ko.observable("SoldToAccount test");
SimpleSearchResultsObj.quoteDetailsObj.jobName = ko.observable("jobName test");
ko.applyBindings(SimpleSearchResultsObj.quoteDetailsObj, document.getElementById("QdetailsDiv"));
};
};
function QuoteSimpleSearchVM() {
var self = this;
self.simpleSearchResultsArray = ko.observableArray([]);
var SimpleSearchResultsObj= new SimpleSearchResults();
SimpleSearchResultsObj.index=ko.observable("1");
self.simpleSearchResultsArray.push(SimpleSearchResultsObj);
var SimpleSearchResultsObj2= new SimpleSearchResults();
SimpleSearchResultsObj2.index=ko.observable("2");
self.simpleSearchResultsArray.push(SimpleSearchResultsObj2);
};
var obj= new QuoteSimpleSearchVM();
$(document).ready(function () {
$("#unbindbutton").click(function(){
var element = $('#QdetailsDiv')[0];
ko.cleanNode(element);
});
ko.utils.arrayForEach(obj.simpleSearchResultsArray(), function (SimpleSearchResultsObj) {
if (SimpleSearchResultsObj.index() === "2") {
SimpleSearchResultsObj.BindDataToQuotesDetailVM(this);
}
});
});
Can anyone help me solve this issue?
Thanks in advance.