Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
<div>
{{each(idx, menu) menus }}
<button data-bind="click: click">${caption}</button>
{{/each}}
</div>
<div id="sub-model-view" data-bind='template: { name: currMenuTemplate } '>
var model = {
menus:[
MenuItem('Услуги/Операции','eq-operations'),
MenuItem('Рабочие места','eq-workplaces')
],
currMenuIdx: ko.observable(0),
currMenuTemplate: function(){
return model.menus[model.currMenuIdx()].template;
}
};
function MenuItem(caption, template){
var r = {
caption: caption,
template: template,
click: function(){ ActivateMenu( r ); }
};
return r;
};
function ActivateMenu(mi){
var i = model.menus.indexOf(mi);
model.currMenuIdx(i);
$.koApplication.loadModel('ui/js/eq/'+mi.template+'.js');
}
<div id="sub-model-view" data-bind='template: { name: currMenuTemplate, data: subModel } '>
var model = {
...
currMenuTemplate: function(){
return model.menus[model.currMenuIdx()].template;
},
subModel: {...}
...
};
Пример использования KnockoutJS