<address id="ttjl9"></address>

      <noframes id="ttjl9"><address id="ttjl9"><nobr id="ttjl9"></nobr></address>
      <form id="ttjl9"></form>
        <em id="ttjl9"><span id="ttjl9"></span></em>
        <address id="ttjl9"></address>

          <noframes id="ttjl9"><form id="ttjl9"></form>

          vue非父子組件間的傳值

          2020-3-18    前端達人

          vue非父子組件傳值的基本語法

          創建一個新的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>
          
          ————————————————
          版權聲明:本文為CSDN博主「溫柔的堅持」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
          原文鏈接:https://blog.csdn.net/weixin_43745003/article/details/104919633

          
          


          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://www.syprn.cn

          存檔

          亚洲va欧美va天堂v国产综合