nested-vms.html 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <style type="text/css">
  2. p {
  3. position: relative;
  4. }
  5. p:not(.ancestor):before {
  6. position: absolute;
  7. top: 0;
  8. left: -22px;
  9. content: "└ ";
  10. color: #F00;
  11. }
  12. </style>
  13. <meta charset="utf8">
  14. <div id="grandpa" name="Andy">
  15. <p class="ancestor">{{name}} {{family}}</p>
  16. <div v-component="man" name="Jack">
  17. <p class="jack">{{name}}, son of {{$parent.name}}</p>
  18. <div v-component="man" name="Mike">
  19. <p class="mike">{{name}}, son of {{$parent.name}}</p>
  20. <div v-component="offspring" name="Tim" class="tim"></div>
  21. <div v-component="offspring" name="Tom" class="tom"></div>
  22. </div>
  23. <div v-component="man" name="Jason">
  24. <p class="jason">{{name}}, son of {{$parent.name}}</p>
  25. <div v-component="offspring" name="Andrew" class="andrew"></div>
  26. </div>
  27. </div>
  28. </div>
  29. <script type="text/x-template" id="offspring-template">
  30. <p>{{name}}, son of {{$parent.name}}, grandson of {{$parent.$parent.name}}, great-grandson of {{$root.name}}, and offspring of family {{family}}.</p>
  31. </script>
  32. <script src="../../../dist/vue.js"></script>
  33. <script>
  34. Vue.config({
  35. debug: true
  36. })
  37. var Man = Vue.extend({
  38. paramAttributes: ['name']
  39. })
  40. var Offspring = Man.extend({
  41. template: '#offspring-template'
  42. })
  43. Vue
  44. .component('man', Man)
  45. .component('offspring', Offspring)
  46. new Man({
  47. el: '#grandpa',
  48. data: {
  49. family: 'Johnson'
  50. }
  51. })
  52. </script>