nested-viewmodels.html 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Nested Controllers</title>
  5. <style type="text/css">
  6. div:not(#grandpa) {
  7. padding-left: 15px;
  8. }
  9. p {
  10. position: relative;
  11. }
  12. p:not(.ancestor):before {
  13. position: absolute;
  14. top: 0;
  15. left: -22px;
  16. content: "└ ";
  17. color: #F00;
  18. }
  19. </style>
  20. <script src="bind.js"></script>
  21. <script src="../../../dist/seed.js"></script>
  22. </head>
  23. <body>
  24. <div id="grandpa" data-name="Andy" data-family="Johnson">
  25. <p class="ancestor">{{name}} {{family}}</p>
  26. <div sd-component="man" data-name="Jack">
  27. <p class="jack">{{name}}, son of {{^name}}</p>
  28. <div sd-component="man" data-name="Mike">
  29. <p class="mike">{{name}}, son of {{^name}}</p>
  30. <div sd-component="offspring" data-name="Tim" class="tim">
  31. </div>
  32. <div sd-component="offspring" data-name="Tom" class="tom">
  33. </div>
  34. </div>
  35. <div sd-component="man" data-name="Jason">
  36. <p class="jason">{{name}}, son of {{^name}}</p>
  37. <div sd-component="offspring" data-name="Andrew" class="andrew">
  38. </div>
  39. </div>
  40. </div>
  41. </div>
  42. <script type="text/sd-template" id="sd-template-offspring">
  43. <p>{{name}}, son of {{^name}}, grandson of {{^^name}}, great-grandson of {{*name}}, and offspring of family {{family}}.</p>
  44. </script>
  45. <script>
  46. Seed.config({ debug: true })
  47. var Man = Seed.extend({
  48. init: function () {
  49. this.name = this.$el.dataset.name
  50. var family = this.$el.dataset.family
  51. if (family) {
  52. this.family = family
  53. }
  54. }
  55. })
  56. var Offspring = Man.extend({
  57. template: document.getElementById('sd-template-offspring').innerHTML.trim()
  58. })
  59. Seed
  60. .component('man', Man)
  61. .component('offspring', Offspring)
  62. new Man({
  63. el: '#grandpa'
  64. })
  65. </script>
  66. </body>
  67. </html>