zoukankan      html  css  js  c++  java
  • VUE 组件通信总结

    1.prop 父组件传递给子组件,即通过VUE本身具有的Props属性来传递值

    Child组件

    <template>
      <span>{{message}}</span>
    </template>
    <script>
    export default {
      props: ['message'],
      data () {
        return {}
      }
    }
    </script>

    Father组件

    <template>
        <div>
            <child message='via props'></child>
        </div>
    </template>
    <script>
    import child from './child'
    export default {
        components: {
            child
        }
    }
    </script>  

    运行结果

     2.非Prop传递数据

    Child

    <template>
      <span @click="getData()">{{message}}</span>
    </template>
    <script>
    export default {
      props: ['message'],
      data () {
    return {} },   methods: {     getData () {       console.log(this.$el.attributes.noprop.value)     }   } } </script>

    Father

    <template>
      <div>
        <child noProp='not via props' message='via props'></child>
      </div>
    </template>
    <script>
    import child from './child'
    export default {
      components: {
        child
      }
    }
    </script>

    运行结果

     3.v-on v-emit 子组件传给父组件

    Child

    <template>
      <span @click="emitTest()">{{message}}</span>
    </template>
    <script>
    export default {
      props: ['message'],
      data () {
        return {}
      },
      methods: {
        emitTest () {
          console.log('This is children"s message')
          this.$emit('onTest', '123')
        }
      }
    }
    
    </script>

    Father

    <template>
      <div>
        <child v-on:onTest='onTestFunc' message='via props'></child>
      </div>
    </template>
    <script>
    import child from './child'
    export default {
      components: {
        child
      },
      methods: {
        onTestFunc (id) {
          console.log('This is father"s message' + id)
        }
      }
    }
    </script>

    运行结果

    4.vue实例作为事件总线,非父子组件通信

     

    5.Vuex

    https://cn.vuejs.org/v2/guide/state-management.html

    6.作用域插槽

    child

    <template>
      <div>
        <slot message="This is a children message"></slot>
      </div>
    </template>
    <script>
    export default {
    }
    </script>

    Father

    <template>
      <div>
        <child>
          <template scope="scope">{{scope.message}}</template>
        </child>
      </div>
    </template>
    <script>
    import child from './child'
    export default {
      components: {
        child
      }
    }
    </script>

    运行结果

    7.$parent,$children

    $children,即在父组件中,可以利用this.$children[x]来访问子组件的data属性,如果你觉得按数组当有多个子组件时难以维护,也可以用$ref,

    首先你的给子组件做标记。demo <firstchild ref="one"></firstchild>

          然后在父组件中,通过this.$refs.one就可以访问了这个自组件了,包括访问自组件的data里面的数据,调用它的函数

    Child

    <template>
      <div></div>
    </template>
    <script>
    export default {
      data () {
        return {
          childMsg: 'this is a child msg'
        }
      }
    }
    </script>

    Father

    <template>
      <div>
        <child></child>
      </div>
    </template>
    <script>
    import child from './child'
    export default {
      components: {
        child
      },
      mounted () {
        console.log(this.$children[0].childMsg)
    }
    }
    </script>

    $parent

    Child

    <template>
      <div></div>
    </template>
    <script>
    export default {
      mounted () {
        console.log(this.$parent.fatherMsg)
      }
    }
    </script>

    Father

    <template>
      <div>
        <child></child>
      </div>
    </template>
    <script>
    import child from './child'
    export default {
      components: {
        child
      },
      data () {
        return {
          fatherMsg: 'this is a fatherMsg'
        }
      }
    }
    </script>

  • 相关阅读:
    angular js 多处获取ajax数据的方法
    回调函数(在原生ajax中应用) 事件监听 与promise的应用介绍
    AngularJS Scope(作用域)
    angular js 模型 (ng-model指令)
    angular js 指令 ng-model与 no-repeat的使用 ng-各种指令 创建自定义指令 限制使用指令 restrict的不同取值
    Ka的回溯编程练习 Part2|八皇后问题和N皇后问题
    Ka的回溯编程练习 Part1|整划什么的。。
    Ka的递归编程练习 Final.Part8|回溯前传二|排列组合
    Ka的递归编程练习 Part7|回溯前传一|素数环!
    Ka的递归编程练习 Part6|简单背包问题,拒绝动规从我做起
  • 原文地址:https://www.cnblogs.com/Darlietoothpaste/p/7718466.html
Copyright © 2011-2022 走看看