zoukankan      html  css  js  c++  java
  • vue学习笔记之父组件子组件的传值

    一  在前端开发过程中,很多情况下一个页面无法装载大部分的代码,所以需要子组件来完成父组件的任务,下面我来展示一下,组件之间如何进行传值以及常见的坑,首先上代码

        1.1   父组件代码

        

    <template>
      <div class="app-container">
        <eHeader :query="query"/>
            <el-table v-loading="loading" ref="table" :data="data" size="small" style=" 100%;">
              <el-table-column prop="type" label="xxx"/>
              <el-table-column prop="public_address" label="xxx"/>
              <el-table-column prop="private_address" label="xxx"/>
              <el-table-column prop="location" label="xxx"/>
              <el-table-column prop="strategy" label="xxx"/>
              <el-table-column prop="dns" label="xxx"/>
              <el-table-column prop="status" label="xxx"/>
              <el-table-column prop="reboot_time" label="xxx"/>
              <el-table-column label="xxx" width="240px" align="center">
                <template slot-scope="scope">
                  <el-button v-if="checkPermission(['xxx'])" type="primary" size="mini" plain @click="getuser(scope.row)" style="margin-left:0px">用户详情</el-button>
                </template>
              </el-table-column>
              <!--<el-table-column prop="desc" label="备注"/>-->
            </el-table>
            <!--抽屉组件-->
            <eDrawer  @sendVal="closeDialog" :isDrawerShow="isDrawerShow" :drawerData="drawerData"/>####这里将数据布尔值以及函数传给子组件
            <!--分页组件-->
            <el-pagination
              :total="total"
              :page-sizes="[25, 50, 100, 200]"
              style="margin-top: 8px;"
              layout="total, prev, pager, next, sizes"
              @size-change="sizeChange"
              @current-change="pageChange"/>
      </div>
    </template>
    
    <script>
    import initData from '@/mixins/initData'
    import { getKey } from '@/api/dict'
    import { parseTime } from '@/utils/index'
    import eHeader from './module/header'
    import eDrawer from './module/drawer'    ##这里引入抽屉子组件export default {
      components: { eHeader,eDrawer },
      mixins: [initData],
      data() {
        return {
          row_data: null,
          span1: 24,
          show: false,
          table_show: true,
          transfer_data: [],
          Loading: false,
          sup_this: this,
          isDrawerShow:false,###需要传入子组件的布尔值,true打开,false关闭
          drawerData:{} ###传入子组件的数据
      }

        1.2 子组件代码

    <template>
        <div>
            <el-drawer
                title="用户详情!"
                :visible.sync="is_show" ####与局部变量is_show绑定,true打开,false关闭
                direction="rtl"
                size="50%">
                <div class="item">
                  <p class="labelContent">备注:</p>
                  <p class="contentN">{{drawerData.public_address}}</p>
                </div>
            </el-drawer>
        </div>
    </template>
    
    <script>
    export default {
        props:{#用prop来接收父组件的值,由于数据不需要回传和改变直接使用
          isDrawerShow: {
              type: Boolean,
              required: true
          },
          drawerData:{#布尔值会改变,需要引入局部变量is_show中
              type: Object,
              required: true
          },
        },
        computed: {
        is_show: {
            set(val){##改变父组件中的值
              this.$emit('sendVal',val)
                    },
            get(){##获取父组件的值
              return this.isDrawerShow
                  }
        }
      }
    }
    </script>

    总结:父组件的值传给子组件之后,不能直接改变,否则会出现一些奇怪的错误,一般定义到子组件的局部变量中,并且当要改变的时候由父组件发起

  • 相关阅读:
    用Webshell直接杀入内网
    别再说找不到Python练手项目了,这80个拿去过冬
    亲爱的,我是一条Linux运维技术学习路径呀。
    一份C++学习资源,咬牙切齿地好用呀
    技术变现,到底怎么变?本文或能成为你的“点金石”
    40个大数据学习资源,个个是干货,最后7个太给力
    零基础如何学好数据分析?
    8个程序员专用软件/网站,个个是神器,第一个最惊喜......
    如何写一个优秀的GitHub项目README文档?
    超全PHP学习资源整理:入门到进阶系列
  • 原文地址:https://www.cnblogs.com/wxm-pythoncoder/p/15074842.html
Copyright © 2011-2022 走看看