zoukankan      html  css  js  c++  java
  • vue2.0父子组件通信的方法

    vue2.0组件通信方法:props传值和emit监听。(.sync方法已经移除。详情请点击)(dispatch-和-broadcast方法也已经废弃

    props方法传值:Props 现在只能单项传递。为了对父组件产生反向影响,子组件需要显式地传递一个事件而不是依赖于隐式地双向绑定。props方法传值比较简单,缺点是属性会比较多。

    (1)父传子 [ props传值 ]

    <template>
      <div>
        <input type="text" v-model="name"/> 
          <myname :test-name="name"></myname>
      </div>
    </template>
    <script type="text/javascript">
      export default{
        data(){
          return {
            name:"lihua"
          }
        },
        components:{
          myname:{
             props:['testName'],
             template:"<h4>{{testName}}</h4>"
          }
        }
      }
    </script

    这里需要注意的是testName 用的驼峰写法,如果是驼峰写法,上面的组件里面就应该是用“-”连接,即:test-name

    (1)子传父 [ 使用$emit和$on进行父子组件之间的数据传输 ],也可以进行兄弟组件的传值,原理一样。

    • 监听:$on(eventName)
    • 触发:$emit(eventName)

    <template>
      <div>
          <input type="text" v-model="name"/>
          <myname></myname>
      </div>
    </template>
    <script type="text/javascript">
    import Vue from 'vue'
    //准备一个空的实例对象,如果不定义,用this的话,this指向当前组件,达不到效果
    //在简单的场景下,你可以使用一个空的 Vue 实例来作为中央事件总线(event bus):
    var newOption=new Vue(); export default{ data(){ return { name:"lihua" } }, mounted(){ newOption.$on('test',mag=>{ this.name=mag }) }, components:{ myname:{ data(){ return { testName:"张三" } }, template:"<div><p>{{testName}}</p><button @click='childEdit'>修改</button></div>", methods:{ childEdit:function(){ newOption.$emit('test',this.testName) } } } } } </script>
  • 相关阅读:
    心跳
    UITableView 总结(一)
    scrollView的contentSize,contentInsert,contentOffset
    如何跟踪论文的作者?
    hadoop与spark执行定时任务,linux执行定时任务
    java.lang.NoSuchMethodError问题处理
    数据挖掘与机器学习的相关理解
    HBASE
    腾讯云ping不通外网
    腾讯云,激活ubuntu root登录,设置ssh
  • 原文地址:https://www.cnblogs.com/xiaotanke/p/7159860.html
Copyright © 2011-2022 走看看