vue非父子组件如何进行传值?

    互联网/前端 99次点击 · 1164天前 · 晚秋
Word水印如何铺满整个文档?WPS表格技巧—拆分单元格中的文本和数字? 晚秋

1条回答我要回复

    海绵宝宝1164天前

      创建一个新的vue对象
      var newvue = new Vue()触发事件newvue.$emit('自定义事件名', 参数)监听事件newvue.on('自定义事件名', 触发方法名)销毁事件newvue.off('自定义事件名') 案例
      放在html页面上即可显示,注意要引入vue<!DOCTYPE html>
      <html lang="en">
      <head>
      <meta charset="UTF-8">
      <title>Document</title>
      </head>
      <body>
      <div id="app">
      <div>父组件</div>
      <div>
      <button @click='handle'>销毁事件</button>
      </div>
      <test-tom></test-tom>
      <test-jerry></test-jerry>
      </div>
      <script type="text/Javascript" src="js/vue.js"></script>
      <script type="text/Javascript">
      /*
      兄弟组件之间数据传递
      */
      // 提供事件中心
      var hub = new Vue();

      Vue.component('test-tom', {
      data: function(){
      return {
      num: 0
      }
      },
      template: `
      <div>
      <div>TOM:{{num}}</div>
      <div>
      <button @click='handle'>点击</button>
      </div>
      </div>
      `,
      methods: {
      handle: function(){
      hub.$emit('jerry-event', 2);
      }
      },
      mounted: function() {
      // 监听事件
      hub.$on('tom-event', (val) => {
      this.num += val;
      });
      }
      });
      Vue.component('test-jerry', {
      data: function(){
      return {
      num: 0
      }
      },
      template: `
      <div>
      <div>JERRY:{{num}}</div>
      <div>
      <button @click='handle'>点击</button>
      </div>
      </div>
      `,
      methods: {
      handle: function(){
      // 触发兄弟组件的事件
      hub.$emit('tom-event', 1);
      }
      },
      mounted: function() {
      // 监听事件
      hub.$on('jerry-event', (val) => {
      this.num += val;
      });
      }
      });
      var vm = new Vue({
      el: '#app',
      data: {

      },
      methods: {
      handle: function(){
      hub.$off('tom-event');
      hub.$off('jerry-event');
      }
      }
      });
      </script>
      </body>
      </html>

    请先登录后,再回复