>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring:Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 18897 个阅读者 刷新本主题
 * 贴子主题:  vue父、子组件相关的传递 回复文章 点赞(0)  收藏  
作者:mary    发表时间:2020-07-13 08:47:59     消息  查看  搜索  好友  邮件  复制  引用

  
     使用vue这种组件化开发的项目里,父子组件间相互传值是非常频繁的操作。比如一个组件调用另一个组件作为自己的子组件,那么我们如何进行给子组件进行传值呢?

     基于这种情况,本篇将给大家介绍Vue开发中常用的几种情况:父向子传递值、子组件向父传递值,父组件调用子组件方法,子组件调用父组件方法。

     vue官网的一句话:
  父子组件的关系可以总结为prop向下传递,事件向上传递。父组件通过prop[/code] 给子组件下发数据,子组件通过事件给父组件发送消息
如下图所示:

                点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

              接下来,我们通过实例来看可能会更容易理解一些:

一、父组件向子组件操作**

1  父组件向子组件进行传值

     父组件代码:    

<template>
  <div>
    父组件:
    <input type="text" v-model="name">
    <br>
    <br>
    <!-- 引入子组件 传值使用冒号,如下面的 :inputName,在inputName前加上一个 :  -->
    <child :inputName="name"></child>
  </div>
</template>
<script>
  // 引入子组件
  import child from './child'
  export default {
    components: {
      child// 自组建声明
    },
    data () {
      return {
        name: ''
      }
    }
  }
</script>

  子组件代码:    

<template>
  <div>
    子组件:
    <span>{{inputName}}</span>
  </div>
</template>
<script>
  export default {
    // 接受父组件的值,需要在props中进行显示的定义
    props: {
      inputName: String,
      required: true
    }
  }
</script>

   1 父组件调用子组件的方法

     父组件:    

<template>
    <div>
        <button v-on:click="clickParent">点击</button>
        // 声明一个ref
        <child1 ref="child1"></child1>
    </div>
</template>
<script>
    import Child1 from './child1';
    export default {
        name: "parent",
        components: {
            child1: Child1
        },
        methods: {
            clickParent() {
                //直接调用自组件的handleParentClick()方法
                this.$refs.child1.handleParentClick("ssss");
            }
        }
    }
</script>

  子组件:    

<script>
    export default {
        name: "child1",
        props: "msg",
        methods: {
            handleParentClick(e) {
            }
        }
    }
</script>

二、 子组件向父组件操作

2. 子组件向父组件传值

     子组件代码:    

<template>
  <div>
    子组件:
    <span>{{childValue}}</span>
    <!-- 定义一个子组件传值的方法 -->
    <input type="button" value="点击触发" @click="childClick">
  </div>
</template>
<script>
  export default {
    data () {
      return {
        childValue: '我是子组件的数据'
      }
    },
    methods: {
      childClick () {
        // childByValue是在父组件on监听的方法
        // 第二个参数this.childValue是需要传的值
        this.$emit('childByValue', this.childValue)
      }
    }
  }
</script>

  父组件代码:    

<template>
  <div>
    父组件:
    <span>{{name}}</span>
    <br>
    <br>
    <!-- 引入子组件 定义一个on的方法监听子组件的状态-->
    <child v-on:childByValue="childByValue"></child>
  </div>
</template>
<script>
  import child from './child'
  export default {
    components: {
      child
    },
    data () {
      return {
        name: ''
      }
    },
    methods: {
      childByValue: function (childValue) {
        // childValue就是子组件传过来的值
        this.name = childValue
      }
    }
  }
</script>

   2 子组件调用父组件的方法

     父组件:    

<template>
      <div class="wrapper">
            <cp_action @parentMethod="macSelect"></cp_action>
      </div>
</template>
<script>
import ../components/action  //引入子组件
export default{
    components:{
        cp_action
    },
    method:{
        macSelect(){
            //方法体
            alert(123);
        }
    }
}
</script>

  子组件    

<template>
    <div class="bet-action">
        <span class="mac-select" @click="childMethod">机选</span>
    </div>
</template>
<script>
    export default{
      methods: {
          childMethod() {
              console.log('请求父组件方法');
              this.$emit('parentMethod');  //使用$emit()引入父组件中的方法
          }
      },
    }
</script>

----------------------------
原文链接:https://www.jianshu.com/p/53dd7abe358f

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 admin 在 2021-09-27 00:08:12 重新编辑]
  Java面向对象编程-->Java语言的基本语法和规范
  JavaWeb开发-->JSP中使用JavaBean(Ⅱ)
  JSP与Hibernate开发-->Java对象持久化技术概述
  Java网络编程-->通过JDBC API访问数据库
  精通Spring-->组合(Composition)API
  Vue3开发-->通过Vuex进行状态管理
  Marshalling在Netty中的使用
  Netty初识
  SpringCloud服务间内部调用原理
  git 常用指令总结
  99%的人都能看懂的“熔断”以及最佳实践
  微服务架构模型
  Mybatis-plus大数据量流式查询
  WebFlux 响应式编程初体验
  Spring Boot JPA @OneToOne
  超详细使用Maven 搭建 Spring MVC 本地部署Tomcat 实现 Hell...
  阿里JAVA面试题剖析:Redis 和 memcached 有什么区别?
  RESTful API的最佳设计原则
  一文详解微服务架构(好文值得细读)
  如何实现Git服务间同步
  Spring入门基础知识
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。