• vue实现子组件向父组件传递消息


    首先在子组件中定义传递消息的button和一个属性data_send,然后定义传递函数

    (核心就是    $emit('自定义事件')    函数)

    methods:{
          //传递数据函数
          sendMsg(){
            this.data_send = "learn 传递的数据"
            //第一个参数表示父组件响应传递事件的函数,第二个参数是传递的数据
            this.$emit('getSon',this.data_send);
          }
        }

    接下来在父组件中定义接收事件getSon

    <template>
      <div id="app">
        <img src="./assets/logo.png">
        <p>{{datafromson}}</p>
        <hr >
        <!-- 父传子 需要自定义事件getSon然后赋给实现getSonData-->
        <Learn @getSon='getSonData' :title='title' />
      </div>
    </template>

    接下来是getSonData的实现

      methods:{
        //一个参数用于传递子组件过来的数据
        getSonData(data){
          this.datafromson = data;
        }
      }

    完整代码如下,两个组件Learn传递数据给App

    Learn:

    <template>
      <div id="0-1-0">
        <p>{{msg}}-{{title}}</p>
        <button @click='sendMsg' type="button">子传父</button>
      </div>
    
    </template>
    
    <script>
      export default {
        //name是名称,可写可不写
        name:'learn',
        //data是组件的所有字段定义和初始化,类似于构造函数
        data(){
          return {
            msg:'welcomen to my learn component',
            data_send:"",
          }
        },
        props:['title'],
        methods:{
          //传递数据函数
          sendMsg(){
            this.data_send = "learn 传递的数据"
            //第一个参数表示父组件响应传递事件的函数,第二个参数是传递的数据
            this.$emit('getSon',this.data_send);
          }
        }
      }
    </script>
    
    <!-- 使用scoped进行css隔离 -->
    <style lang="css" scoped>
    </style>
    View Code

    App:

    <template>
      <div id="app">
        <img src="./assets/logo.png">
        <p>{{datafromson}}</p>
        <hr >
        <!-- 父传子 需要自定义事件getSon然后赋给实现getSonData-->
        <Learn @getSon='getSonData' :title='title' />
      </div>
    </template>
    
    <script>
    //组件的使用分三步 1.import .vue扩展名可以省略 2.components 注册 3.标签化引用
    import HelloWorld from './components/HelloWorld'
    import VueDemo from './components/VueDemo'
    import Learn from './components/Learn'
    
    export default {
      name: 'App',
      components: {
        HelloWorld,
        VueDemo,
        Learn,
      },
      data(){
        return {
          title:'title from App.vue',
          datafromson:"",
        }
      },
      methods:{
        //一个参数用于传递子组件过来的数据
        getSonData(data){
          this.datafromson = data;
        }
      }
    }
    </script>
    
    <style>
    #app {
      font-family: 'Avenir', Helvetica, Arial, sans-serif;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
      text-align: center;
      color: #2c3e50;
      margin-top: 60px;
    }
    </style>
    View Code
  • 相关阅读:
    左萧龙(LZ)个人博客
    不同样式的计数
    CSS径向渐变radial-gradient
    优秀的Android资源
    读取csv格式的数据
    php 获取URL 各部分参数
    phpstorm查找替换文件中的变量
    PhpStorm 快捷键大全 PhpStorm 常用快捷键和配置
    phpstorm 代码注释后,撤销某段代码的注释的,快捷键是什么?
    关于thinkphp5手动抛出Http异常时自定义404页面报错的问题
  • 原文地址:https://www.cnblogs.com/LeeSki/p/15257840.html
Copyright © 2020-2023  润新知