index.html 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Vue.js Modal Example</title>
  6. <script src="../../dist/vue.js"></script>
  7. <link rel="stylesheet" href="modal.css">
  8. </head>
  9. <body>
  10. <!-- template for the modal component -->
  11. <template id="modal-template">
  12. <div class="modal-mask" v-show="show" v-transition="modal">
  13. <div class="modal-wrapper">
  14. <div class="modal-container">
  15. <content select=".modal-header">
  16. <div class="modal-header">
  17. default header
  18. </div>
  19. </content>
  20. <content select=".modal-body">
  21. <div class="modal-body">
  22. default body
  23. </div>
  24. </content>
  25. <content select=".modal-footer">
  26. <div class="modal-footer">
  27. default footer
  28. <button class="modal-default-button"
  29. v-on="click: show = false">
  30. OK
  31. </button>
  32. </div>
  33. </content>
  34. </div>
  35. </div>
  36. </div>
  37. </template>
  38. <script>
  39. // register modal component
  40. Vue.component('modal', {
  41. template: '#modal-template',
  42. props: {
  43. show: {
  44. type: Boolean,
  45. required: true,
  46. twoWay: true
  47. }
  48. }
  49. })
  50. </script>
  51. <!-- app -->
  52. <div id="app">
  53. <button v-on="click: showModal = true">Show Modal</button>
  54. <!-- use the modal component, pass in the prop -->
  55. <modal show="{{@showModal}}">
  56. <!--
  57. you can use custom content here to overwrite
  58. default content
  59. -->
  60. <div class="modal-header">
  61. <h3>custom header</h3>
  62. </div>
  63. </modal>
  64. </div>
  65. <script>
  66. // start app
  67. new Vue({
  68. el: '#app',
  69. data: {
  70. showModal: false
  71. }
  72. })
  73. </script>
  74. </body>
  75. </html>