Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 27th, 2012  |  syntax: None  |  size: 2.10 KB  |  hits: 10  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. KnockoutJS: Tracking menu clicks
  2. <script id="menuItemTemplate" type="text/html">
  3.     <li class='${ Class }' >
  4.         <a class='${ Class }' data-bind='click: function() { viewModel.menuClicked(Id); }'>${ Name }</a>
  5.         <ul class='${ Class }' data-bind='template: { name: "menuItemTemplate", foreach: Items }'></ul>
  6.     <li>
  7. </script>
  8. <script id="menuTemplate" type="text/html">
  9.     <ul class='${ Class }' data-bind='template: { name: "menuItemTemplate", foreach: Items }'></ul>
  10. </script>
  11. <script id="consoleTemplate" type="text/html">
  12.     <div class='${ Class }' data-bind='template: { name: "menuTemplate", data: Menu }'></div>
  13. </script>
  14. <h2>Application Administration</h2>
  15. <div id="console" class="console" data-bind='template: { name: "consoleTemplate", foreach: Panels }'>
  16. </div>
  17.        
  18. $(function () {
  19. var viewModel = {
  20.     "Panels": [
  21.         {
  22.         "Id" : 1,
  23.         "Class": "main",
  24.         "Menu": {
  25.             "Id": 1,
  26.             "Class": "file",
  27.             "Name": "File",
  28.             "Items": [{
  29.                 "Id": 1,
  30.                 "Class": "open",
  31.                 "Name": "Open",
  32.                 "Items": []
  33.             }]
  34.         }
  35.     }]
  36. };
  37.  
  38.     $.ajax({
  39.         url: 'console.asmx/Initialize',
  40.         type: "POST",
  41.         cache: false,
  42.         contentType: "application/json; charset=utf-8",
  43.         data: "{}",
  44.         dataType: "json",
  45.         success: function (data) {
  46.             viewModel = data.d;
  47.             viewModel.menuActive = ko.observable(false);
  48.             viewModel.currentMenu = ko.observable(0);
  49.             viewModel.menuClicked = function (id) {
  50.                 viewModel.menuActive(true);
  51.                 viewModel.currentMenu(id);
  52.             };
  53.             ko.applyBindings(viewModel);
  54.         }
  55.     });
  56. });
  57.        
  58. <script id="menuItemTemplate" type="text/html">
  59.     <li class='${ Class }' data-bind='visible: viewModel.menuActive && viewModel.currentMenu == Id'>
  60.         <a class='${ Class }' data-bind='click: function() { viewModel.menuClicked(Id); }'>${ Name }</a>
  61.         <ul class='${ Class }' data-bind='template: { name: "menuItemTemplate", foreach: Items }'></ul>
  62.     <li>
  63. </script>