>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring:Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 18624 个阅读者 刷新本主题
 * 贴子主题:  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面向对象编程-->按面向对象开发的基础范例
  JavaWeb开发-->Servlet技术详解(Ⅱ)
  JSP与Hibernate开发-->映射一对多关联关系
  Java网络编程-->非阻塞通信
  精通Spring-->Vue CLI脚手架工具
  Vue3开发-->Vue指令
  git 仓库常用指令
  微服务架构模型
  Spring MVC文件上传与下载
  Spring MVC实现国际化的几种方式
  SpringMVC 中 @ControllerAdvice 注解的三种使用场景!
  拦截器不拦截静态资源的三种处理方法
  Spring配置中bean元素的id和name属性的区别
  回字有四种写法,那你知道单例有五种写法吗
  Redis的漏洞利用,原来大佬都是这样操作的
  解析配置文件 redis.conf、Redis持久化RDB、Redis的主从复制
  SpringCloud微服务框架搭建
  如何实现Git服务间同步
  网红框架SpringBoot2.x之定制参数浅析
  带你逆袭kafka之路
  3分钟让你明白JSON是什么
  更多...
 IPIP: 已设置保密
树形列表:   
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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