jquery - Knockout - one view model for ajax.load page -
i have 1 viewmodel in page has 2 tabs, when page loads viewmodel gets binded, when click on second tab load content using ajax.load in page want use viewmodel defined in page has tabs, possible?
to short - 'yes possible!'. implementation example:
var yourfirsttabviewmodel = { name: ko.observable("john") } var yoursecondtabviewmodel = { somecounter:ko.observable(100) } var mainviewmodel = { changetab : function(tabindex) { if (tabindex == 0) { $("#tabscontentcontainer").load("youpagetabtemplate", function() { ko.applybindingstodescendants(yourfirsttabviewmodel, $("#tabscontentcontainer")[0]); }); } else { $("#tabscontentcontainer").load("youpagetabtemplate2", function () { ko.applybindingstodescendants(yoursecondtabviewmodel, $("#tabscontentcontainer")[0]); }); } } } ko.applybindings(mainviewmodel, $("#tabscontainer")[0]) and markup:
<div id="tabscontainer"> <button data-bind="click:changetab.bind($data, 0)">first tab</button> <button data-bind="click:changetab.bind($data, 1)">second tab</button> <div id="tabscontentcontainer"></div> </div> this work, it's not knockout way! should consider using template knockout binding instead of ajax.load(). can find information template binding on knockout website: http://knockoutjs.com/documentation/template-binding.html
also can @ knockout-amd-helpers, loads templates/viewmodels when need using require.js. here website: https://github.com/rniemeyer/knockout-amd-helpers
Comments
Post a Comment