<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      vue Bus總線

      有時候兩個組件也需要通信(非父子關系)。當然Vue2.0提供了Vuex,但在簡單的場景下,可以使用一個空的Vue實例作為中央事件總線。

      參考:http://blog.csdn.net/u013034014/article/details/54574989?locationNum=2&fps=1

      例子:https://segmentfault.com/q/1010000007491994

      <div id="app">
          <c1></c1>
          <c2></c2>
      </div>
       
      var Bus = new Vue(); //為了方便將Bus(空vue)定義在一個組件中,在實際的運用中一般會新建一Bus.js
      Vue.component('c1',{ //這里已全局組件為例,同樣,單文件組件和局部組件也同樣適用
      template:'<div>{{msg}}</div>',
        data: () => ({
          msg: 'Hello World!'
        }),
        created() {
          Bus.$on('setMsg', content => { 
            this.msg = content;
          });
        }
      });
      Vue.component('c2',{
        template: '<button @click="sendEvent">Say Hi</button>',
        methods: {
          sendEvent() {
            Bus.$emit('setMsg', 'Hi Vue!');
          }
        }
      });
      var app= new Vue({
          el:'#app'
      })

      在實際運用中,一般將Bus抽離出來:

      Bus.js

      import Vue from 'vue'
      const Bus = new Vue()
      export default Bus

      組件調用時先引入

      組件1

      import Bus from './Bus'
      
      export default {
          data() {
              return {
                  .........
                  }
            },
        methods: {
              ....
              Bus.$emit('log', 120)
          },
      
        }        

      組件2

      import Bus from './Bus'
      
      export default {
          data() {
              return {
                  .........
                  }
            },
          mounted () {
             Bus.$on('log', content => { 
                console.log(content)
              });    
          }    
      } 

      但這種引入方式,經過webpack打包后可能會出現Bus局部作用域的情況,即引用的是兩個不同的Bus,導致不能正常通信

       運用二:

      當然也可以直接將Bus注入到Vue根對象中,

      import Vue from 'vue'
      const Bus = new Vue()
      
      var app= new Vue({
          el:'#app',
         data:{
          Bus
          }  
      
      })

      在子組件中通過this.$root.Bus.$on(),this.$root.Bus.$emit()來調用

      運用三:

      將bus掛載到vue.prototype上(這里用了插件的寫法)

      // plugin/index.js
      import Bus from 'vue';
      let install = function (Vue) {
          ... ...
          // 設置eventBus
          Vue.prototype.bus = new Bus();
          ... ...
      }
      
      export default {install};
      
      // main.js
      import Vue from 'vue';
      import plugin from './plugin/index';
      ... ...
      
      Vue.use(plugin);
      
      ... ...

      組件一中定義

      ... ...
      created () {
          this.bus.$on('updateData', this.getdata);
      }

      組件二中調用

      this.bus.$emit('updateData', {loading: false});

       注意:注冊的總線事件要在組件銷毀時卸載,否則會多次掛載,造成觸發一次但多個響應的情況

      beforeDestroy () {
              this.bus.$off('updateData', this.getData);
          }

       

      posted @ 2017-11-01 19:40  fanlinqiang  閱讀(49704)  評論(6)    收藏  舉報
      主站蜘蛛池模板: 欧美成a人片在线观看久| 亚洲欧洲精品成人久久曰| 怡红院一区二区三区在线| 97人妻天天摸天天爽天天| 免费A级毛片无码A∨蜜芽试看| 欧美成人h精品网站| 人妻日韩人妻中文字幕| 亚洲电影在线观看| 乱人伦中文字幕成人网站在线 | 四虎永久地址www成人| 十八禁国产精品一区二区| 日本一区二区三区视频一| 人人爽亚洲aⅴ人人爽av人人片| 日本高清中文字幕免费一区二区| 亚洲a免费| 亚洲一区二区视频在线观看| 开封县| 精品人妻午夜一区二区三区四区| 精品国产成人午夜福利| 人妻在线中文字幕| 国产精品免费AⅤ片在线观看| 丝袜美腿亚洲综合在线观看视频| 亚洲精品人成网线在播放VA | 免费 黄 色 人成 视频 在 线| 精品视频一区二区福利午夜| 中文字幕精品亚洲二区| 激情综合色五月丁香六月亚洲| 天堂va蜜桃一区二区三区| 国产精品一区二区三区av| 放荡的少妇2欧美版| 久久亚洲精品无码播放| 亚洲中文字幕无码一久久区| 欧美成人一卡二卡三卡四卡| 肉色丝袜足j视频国产| 欧洲美熟女乱av在免费| 日本高清在线观看WWW色| 乱码精品一区二区三区| 久热这里只有精品视频六| 亚洲综合网中文字幕在线| 精品无码三级在线观看视频| 久久精品第九区免费观看|