zoukankan      html  css  js  c++  java
  • vue组件间方式总结

    组件间通信的方案

    • 父子关系的组件数据传递选择 props  与 $emit进行传递,也可选择ref
    • 兄弟关系的组件数据传递可选择$bus,其次可以选择$parent进行传递
    • 祖先与后代组件数据传递可选择attrslisteners或者 Provide与 Inject
    • 复杂关系的组件数据传递可以通过vuex存放共享的变量
    • 通过Vue原型共享数据
    • 本地存储的方式
    • 父组件向子组件还可以使用插槽:动态传递标签

    $bus的使用:

    可以用于兄弟组件间或者无关系的组件间通信

    1、在main.js中:

    Vue.prototype.$bus = new Vue()
    

    2、a.vue文件中:

    this.$bus.$emit('msg',10000)
    

      Event.$emit('msg',this.msg)------发送数据,第一个参数是发送数据的名称,接收时还用这个名字接收,第二个参数是传递的数值;

    3、b.vue文件中:

    this.$bus.$on('msg',v=>{
        console.log(v)
    })
    

    Event.$on('msg',function(msg){}------接收数据,第一个参数是数据的名字,与发送时的名字对应,第二个参数是一个方法,要对数据的操作

    4、需要注意的是使用$bus的时候在接受bus的组件中别忘了再beforDestroy函数中销毁bus,不销毁的话会一直叠加的调用这个方法

    beforeDestroy(){
        this.$bus.$off('msg')
    }
    

    attrslisteners的使用:

    参见:https://www.cnblogs.com/dhui/p/12931953.html 

    通过Vue原型共享数据方法:

    eg:
    
    // main.js中这样写:
    Vue.prototype.commonData='www.baidu.com'
    
    // 应用文件中使用如下:
    created(){
      console.log(this.commonData)
    }
    
    // 也可以改变值,但只针对于当前使用,如果别的也页面依旧使用的话还是原来定义的值
    created(){
       this.commonDate='www.360.com'
       console.log(this.commonData)
    }

     

      

      

  • 相关阅读:
    poj2229 Sumsets (递推)
    hihocoder1148 February 29(区间闰年计数)
    sort函数比较cmp写法
    字符串忽略大小写
    地形
    启用和禁用warning
    AppStore SDK
    NGUI List优化
    ETC1
    加载
  • 原文地址:https://www.cnblogs.com/mark21/p/14115377.html
Copyright © 2011-2022 走看看