I created two sub divs inside main div and based on radio button selection, div is shown and hidden. Now , inside one of the sub div i created one dropdown and used foreach binding to populate it.Now when i am running , list of items are coming but show and hide functionality stopped working and in console it is shown as "unable to parse binding" of foreach. Kindly help me in resolving the issue. sample code is present below :
HTML FILE
<body>
<div id="selectdiv">
<input type="radio" id="radio1" name="radioGrp" />div1
<input type="radio" id="radio2" name="radioGrp" />div2
</div>
<div id="myDiv" name="myDiv" class="myDiv" style="font-family: Helvetica; font-size: 12pt; border: 1px solid black;">
<div id="subDiv1" name="subDiv1" data-bind="visible:subDiv1" class="subDiv1" style="color: #FF0000; border: 1px dotted black;">
<h5>Section 1</h5>
<p>MONTHS...</p>
<div id="tabContainer">
<ul data-bind="foreach: months">
<li>
<b data-bind="text: $data"></b>
</li>
</ul>
</div>
</div>
<br />
<div id="subDiv2" name="subDiv2" data-bind="visible:subDiv2" class="subDiv2" style="color: #FF00FF;border: 1px dashed black;">
<h5>Section 2</h5>
<p>This paragraph would be your content paragraph...</p>
<p>Here's another content article right here.</p>
</div>
</div>
</body>
JS FILE
$(document).ready(function() {
alert("ready");
var divdispalyViewModel1 = {
subDiv1: ko.observable(true)
};
var divdispalyViewModel2 = {
subDiv2: ko.observable(true)
};
ko.applyBindings({
months:[ 'Jan', 'Feb', 'Mar', 'etc' ]
});
// alert("ready2");
ko.applyBindings(divdispalyViewModel1);
ko.applyBindings(divdispalyViewModel2);
$('#radio1').click(function () {
alert("radio 1");
divdispalyViewModel1.subDiv1(true);
divdispalyViewModel2.subDiv2(false);
});
$('#radio2').click(function () {
alert("radio2");
divdispalyViewModel1.subDiv1(false);
divdispalyViewModel2.subDiv2(true);
});
});
Month list is fetched from method present in second javascript but how html will get to know that month is binded to second javascript...i mean to say, suppose my first javascript is like below : $(document).ready(function() {
alert("ready");
var vm = function () {
var self = this;
self.subDiv1 = ko.observable(false);
self.subDiv2 = ko.observable(false);
var subDemoMainObj=new subDemoMain();
subDemoMainObj.getMonths();
//self.months = ko.observableArray(['Jan', 'Feb', 'Mar', 'etc']);
};
ko.applyBindings(new vm());
ko.applyBindings(subDemoMainObj, $('#tabContainer')[0]);
}); Second javascript is as below function(ko){
alert("ready1");
var getMonths = function () {
var self = this;
self.months = ko.observableArray(['Jan', 'Feb', 'Mar', 'etc']);
};
// alert("ready2");
//ko.applyBindings(new getMonths());`enter code here`
}, i am expecting something like this but not understanding where i am going wrong :(
:(
with
biding to pick that vm however in your case you dont need those view models (divdispalyViewModel1 & divdispalyViewModel2)in all this is how you could do it
html:
Your drop down doesn't work, that's different issue (css?)
Here is the jsFiddle