App.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <template>
  2. <div id="app">
  3. <!-- 3.使用组件 -->
  4. <Demo @wxChat="qq"></Demo>
  5. <p ref="aaa" @click="showMsg">标签一</p>
  6. <p ref="bbb">标签二</p>
  7. <p ref="ccc">标签三</p>
  8. <!-- 组件通信 -->
  9. <!-- 子组件 -->
  10. <Demos :age="20" name="LiLi" sex="女" ref="getAge"></Demos>
  11. <button @click="showTitle">调用</button>
  12. <!-- 自定义事件 -->
  13. <newDemo @smile="getSmile"></newDemo>
  14. <!--
  15. 第一种:
  16. 父:
  17. 在模板中:自定义事件 v-on/@事件名="自定义方法"
  18. 在方法里:自定义方法(接参){执行的代码}
  19. 子:
  20. 在方法中:this.$emit("监听的事件名",传参)
  21. 第二种:
  22. 父:
  23. 在组件位置:ref="xxx"
  24. 在方法里:
  25. 在挂载后周期mounted(){this.$refs.xxx.$on('监听方法名',调用的方法)}
  26. 子:
  27. 在方法里:this.$emit("监听方法名")
  28. 解绑:
  29. this.$off()
  30. $on 提供数据
  31. $emit 获取数据
  32. $off 解绑数据
  33. -->
  34. <!--
  35. 全局事件 : main.js => Vue.prototype.$bus = this
  36. -->
  37. <List></List>
  38. <Main></Main>
  39. </div>
  40. </template>
  41. <script>
  42. // 1.引入组件
  43. import Demo from '@/components/Demo.vue';
  44. import Demos from '@/components/Demos.vue';
  45. import newDemo from '@/components/newDemo';
  46. import List from '@/components/List';
  47. import Main from '@/components/Main';
  48. // 1.引入mixin
  49. import {mixin} from './utils/mixin';
  50. export default {
  51. data() {
  52. return{
  53. aaa:'1',
  54. }
  55. },
  56. // 2.mixin使用
  57. mixin:[mixin],
  58. // 2.注册组件
  59. components:{
  60. Demo,
  61. Demos,
  62. newDemo,
  63. List,
  64. Main
  65. },
  66. methods:{
  67. // ref绑定信息 使用方法 :
  68. // 在template部分 绑定标签 ref='xxx'
  69. // 调用 this.$refs.xxx
  70. showMsg() {
  71. console.log("信息");
  72. console.log(this.$refs.aaa,"信息");
  73. console.log(this.$refs.bbb,"信息");
  74. console.log(this.$refs.ccc,"信息");
  75. },
  76. getSmile(name) {
  77. console.log("获得" + name +'的微笑');
  78. },
  79. qq(name,...prams) {
  80. console.log("获得" + name +'的微笑',...prams);
  81. },
  82. aa() {
  83. console.log("成功了")
  84. }
  85. },
  86. mounted() {
  87. // this.$refs.名字.$on("字定义",this.aa)
  88. this.$refs.getAge.$on("ab",this.aa)
  89. }
  90. }
  91. </script>
  92. <style lang="scss">
  93. #app {
  94. font-family: Avenir, Helvetica, Arial, sans-serif;
  95. -webkit-font-smoothing: antialiased;
  96. -moz-osx-font-smoothing: grayscale;
  97. text-align: center;
  98. color: #2c3e50;
  99. }
  100. </style>