1.父组件传值给子组件

html:  子组件:addFinancialUser

<template><div class="main-content adminStyle"><div class="condition" v-if="status"><el-row class="row-bg"><div class="condition-box"><el-col :span="20"><div class="col-2 col"><el-button @click="addFinancialUserBtn" size="small" type="primary">新增</el-button></div></el-col><el-col :span="4" class="query-operate"><el-row><el-col :span="18"><div class="col-1 col"><label>机构名称:</label><el-input v-model="searchData.name" placeholder="请输入机构名称" class="ipt-name"/></div></el-col><el-col :span="6"><div class="query-btn"><el-button type="primary" class="inquiry-btn" @click="inquiryBtn">查询</el-button></div></el-col></el-row></el-col></div></el-row><div class="table-list"><el-table :data="infoList"  :header-cell-style="{background:'#EEF5FD'}" border style="width: 100%"><el-table-column prop="id" min-width="20" label="序号"></el-table-column><el-table-column prop="userName" min-width="50" label="登录账号"></el-table-column><el-table-column prop="finName" label="机构名称"></el-table-column><el-table-column prop="finType"  min-width="50" label="机构类型"><template slot-scope="scope"><span>{{ finTypeName[scope.row.finType - 1] }}</span></template></el-table-column><el-table-column prop="finPhone" min-width="60" label="机构联系方式"></el-table-column><el-table-column label="启用/冻结" min-width="50"><template slot-scope="scope"><el-switch v-model="scope.row.status" :width='52' active-color="#FF8D31" inactive-color="#E6E6E6":active-value='1':inactive-value='0'@change="switchChange(scope.row)"></el-switch></template></el-table-column><el-table-column label="操作"><template slot-scope="scope"><div class="operate-btn"><el-button type="text" size="small" @click="resetPasswordBtn(scope.row.id)">重置</el-button><el-button type="text" size="small" @click="editorBtn(scope.row)">编辑</el-button><el-button type="text" size="small" @click="delectBtn(scope.row.id)">删除</el-button></div></template></el-table-column></el-table></div><div class="pagination-per"><pagination :pagination="pagination" @changePage="handleChangePage"/></div></div><addFinancialUser v-if="!status" :status="statustype" :oData="formData" @cancel="cancelFn" @confirm="confirmFn"></addFinancialUser></div>
</template>

script:在父组件中,通过属性oData向子组件传递formData的参数

<script>
import { platform } from "@/api/platformApi.js";
import addFinancialUser from './addFinancialUser.vue'
export default {name: "paltformFinancial",components: {addFinancialUser},data() {return {status: true,statustype: 0,selectVal: [],name: "",selectList: [{value: "选项1",label: "启用"},{value: "选项2",label: "冻结"}],searchData: {name: '',pageNum: 1,pageSize: 10},infoList: [],pagination: {},finTypeName: ['银行', '证券公司', '保险公司', '信托投资公司', '基金管理公司'],formData: {username: '',name: '',type: '',creditCode: '',address: '',phone: '',information: '',},};},created() {this.ajaxData();// this.pagination.total = this.infoList.length
  },methods: {// handleClick: function(obj) {//   this.$router.push({ path: "" });// },// btnFn() {//   this.ajaxData();// },
    cancelFn() {this.status = true;},
    confirmFn(data) {    this.infoList = data;this.status = true;this.ajaxData();},resetPasswordBtn(id) {platform.resetPassword(id).then(res => {if(res.data.code == '200') {this.$message({type: "success",message: "密码重置成功!",duration: 3000,});}})},delectBtn(id) {platform.userDel(id).then(res => {if(res.data.code == '200') {this.$message({type: "success",message: "用户删除成功!",duration: 3000,});}})},switchChange(value) {platform.liveOrDead(value.id).then(res => {})},inquiryBtn() {this.ajaxData();},handleChangePage: function(data) {this.infoList = data.tableData;this.pagination = data.pagination;},// 请求
    ajaxData() {this.infoList = [];platform.findFinancialQuery(this.searchData).then(res => {if (res.data.data.listData.length > 0) {this.infoList = res.data.data.listData;this.pagination = {pageNum: 1,pageSize: 10,total: res.data.data.total || 0,url: "/financial/sysUserManager/findFinancialQuery",params: this.searchData,method: "post"};} else {}}).catch(err => {console.log("error:", err);});},// handleRemove(file, fileList) {//   console.log(file, fileList);// },// handlePreview(file) {//   console.log(file);// },// handleExceed(files, fileList) {//   this.$message.warning(//     `当前限制选择 3 个文件,本次选择了 ${//       files.length//     } 个文件,共选择了 ${files.length + fileList.length} 个文件`//   );// },// beforeRemove(file, fileList) {//   return this.$confirm(`确定移除 ${file.name}?`);// },
    addFinancialUserBtn() {this.status = false;this.statustype = 0;this.formData = {username: '',name: '',type: '',creditCode: '',address: '',phone: '',information: '',}},editorBtn(data) {this.status = false;this.statustype = 1;this.formData = {username: data.username,name: data.name,type: data.type,creditCode: data.creditCode,address: data.address,phone: data.phone,information: data.information,}}}
};
</script>

子组件中:html

<template><div><el-header class="header"><span>金融机构用户管理</span><i>|</i><span>{{ status == 0 ? '新增用户' : '编辑用户'}}</span></el-header><el-main class="main"><el-form :model="formData" :rules="rules" ref="formItem" label-width="120px"><el-form-item label="登陆账号:" prop="username"><el-input v-model="formData.username" placeholder="请填写登陆账号" class="formInput"></el-input></el-form-item><el-form-item label="机构名称:" prop="name"><el-input v-model="formData.name" placeholder="请填写机构名称" class="formInput"></el-input></el-form-item><el-form-item label="机构类型:" prop="type"><!-- <el-input v-model="formData.type" placeholder="请填写机构类型" class="formInput"></el-input> --><el-select v-model="formData.type" :popper-append-to-body="false"><el-optionv-for="item in typeList":key="item.value":label="item.label":value="item.value"></el-option></el-select></el-form-item><el-form-item label="统一社会信用代码:" prop="creditCode"><el-input v-model="formData.creditCode" placeholder="请填写统一社会信用代码" class="formInput"></el-input></el-form-item><el-form-item label="联系地址:" prop="address"><el-input v-model="formData.address" type="textarea" placeholder="联系地址" class="formInput"></el-input></el-form-item><el-form-item label="机构联系电话:" prop="phone"><el-input v-model="formData.phone" placeholder="请填写机构联系电话:" class="formInput"></el-input></el-form-item><el-form-item label="机构简介:" prop="information"><el-input v-model="formData.information" type="textarea" placeholder="请填写机构简介" class="formInput"></el-input></el-form-item></el-form><div class="dialog-footer"><!-- <el-button @click="">取 消</el-button> --><div class="primary-btn primary-btn1" @click="canceBtn">取消</div><div class="primary-btn primary-btn2" v-if="status == 0" @click="submitAddForm">新增</div><div class="primary-btn primary-btn2" v-if="status == 1" @click="submitEditorForm">编辑</div></div></el-main></div>
</template>

script:通过props里定义属性,然后再data中接收来自父组件的属性值formData:this.oData

<script>
import { platform } from "@/api/platformApi.js";
export default {name: "addInfo",props: {status:{type: Number,default: 0},
    oData: {type: Object,default: {username: '',name: '',type: '',creditCode: '',address: '',phone: '',information: '',}}},data() {let regCode = /^[A-Z0-9]{18}$/;let regPhone = /^([0-9]{11})?$/;// 手机号码验证let validatePhone = (rule, value, callback) => {if (value === '') {callback(new Error('请输入手机号码'));} else if (!regPhone.test(value)) {callback(new Error('请输入正确的手机号码'));} else {callback();}};// 社会信用代码验证let validateCode = (rule, value, callback) => {if (value === '') {callback(new Error('请输入社会信用代码'));} else if (!regCode.test(value)) {callback(new Error('请输入正确的社会信用代码'));} else {callback();}};return {dialogFormVisible: false,   formData: this.oData,rules: {username: [{ required: true, message: '请填写用户名', trigger: 'blur' }],name: [{ required: true, message: '请填写机构名称', trigger: 'blur' }],type: [{ required: true, message: '请选择机构类型', trigger: 'blur' }],creditCode: [{ validator: validateCode, trigger: 'blur' }],phone: [{ validator: validatePhone, trigger: 'blur' }],information: [{ required: true, message: '请填写机构简介', trigger: 'blur' }]},typeList: [{value: '',label: "请选择类型"},{value: 1,label: "银行"},{value: 2,label: "证券公司"},{value: 3,label: "保险公司"},{value: 4,label: "信托投资公司"},{value: 5,label: "基金管理公司"}],type: ''}},watch: {oData: {handler(newName) {this.formData = newName;},deep: true}},created() {// this.type = this.route.query.type;// this.formData = this,.
  },methods: {submitAddForm() {this.$refs['formItem'].validate(valid => {if (valid) {platform.addFinancial(this.formData).then(res => {if (res.data.code == '200') {this.dialogFormVisible = false;this.$message({type: 'success',message: '添加成功!',duration: 2000,onClose: () => {this.$emit('confirm',this.formData)}})}}).catch(err => {})} else {return false}})},submitEditorForm() {this.$refs['formItem1'].validate(valid => {if (valid) {platform.modifyFinancial(this.formData1).then(res => {if (res.data.code == '200') {this.dialogFormVisible1 = false;this.$message({type: 'success',message: '编辑成功!',duration: 2000,onClose: () => {this.$emit('confirm')}})}}).catch(err => {})} else {return false}})},canceBtn() {this.$emit('cancel')}}
};
</script>

2.子组件向父组件传值:通过触发事件传值 子组件通过某个动作触发父组件的自定义事件this.$emit('comfirm',this.formData)

父组件通过@confirm事件来触发confirmFn来接收来自子组件的data。

转载于:https://www.cnblogs.com/DebbieBlog/p/10517910.html

vue 父组件与子组件直接的相互传值(愚见)相关推荐

  1. vue 父链和子组件索引_vuejs填坑-父子组件之间的访问

    有时候我们需要父组件访问子组件,子组件访问父组件,或者是子组件访问根组件. 1. 父组件访问子组件 $children或$ref $children 返回所有子组件的实例,是一个数组 显示两个组件的信 ...

  2. vue 父链和子组件索引_解决Vue2.x父组件与子组件之间的双向绑定问题

    最近在研究如何写一套基于Vue2.x的UI组件给自己用,提升一点BIG,在制作含有input的组件遇到一个问题:不知怎样才能把子组件中input与调用者(父组件)的数据实现双向绑定,想过使用Vuex, ...

  3. vue 父链和子组件索引_vue子组件和父组件双向绑定的几种方案

    v-model案例 模仿v-model实现案例 我是一串要和内部名字联动的一串文字(父组件) 父组件改变值带动(父组件)点一下试试 .sync方案实现案例 这是父组件的东西.利用这个框改变值,看看有没 ...

  4. vue 父链和子组件索引_Vue.js 学习笔记 第7章 组件详解

    组件(Component)是Vue.js最核心的功能,也是整个框架设计最精彩的地方,当然也是最难掌握的. 本章将带领你由浅入深地学习组件的全部内容,并通过几个实战项目熟练使用Vue组件. 7.1 组件 ...

  5. Vue父组件调用子组件的方法并传参的两种方式(用$refs.refName.functionName、window.function)

    如需了解儿子怎么控制老子的,传送门:https://s-z-q.blog.csdn.net/article/details/120094689 父组件father.vue <template&g ...

  6. vue父组件调用子组件的方法

    vue组件与组件通信有如下几种情况: 平行组件 父组件与子组件 子组件与父组件 它们之间通信有几种方法有: props 自定义事件 vuex 今天我们聊一下父组件调用子组件的一种方法 parent.v ...

  7. Vue父组件和子组件之间传递数据

    Vue父组件和子组件之间传递数据 klmhly 已关注 2018.05.19 19:56* 字数 367 阅读 23评论 0喜欢 0 一.概念解析 挂载点: Vue实例的el属性对应的id,vue只会 ...

  8. Vue中父组件调用子组件的方法

    场景 SpringBoot+Vue+Echarts实现选择时间范围内数据加载显示柱状图: SpringBoot+Vue+Echarts实现选择时间范围内数据加载显示柱状图_BADAO_LIUMANG_ ...

  9. vue 父组建获取子组建方法为获得_Vue父子组件状态同步的最佳方式

    平时我们在使用Vue开发的时候,可能会遇到需要父组件与子组件某个状态需要同步的情况,通常这个是因为我们封装组件的时候有一个相同的状态外面要用,里面也要用,今天我们就来看看怎么优雅的解决这个问题吧! 一 ...

  10. 042——VUE中组件之子组件使用$on与$emit事件触发父组件实现购物车功能

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...

最新文章

  1. 世界32条谣言,你被骗了多少?
  2. 不要去追一匹马,用追马的时间种草
  3. 人生第一次手术:0817
  4. Redis学习笔记五:独立功能之事务
  5. spring boot Redis使用
  6. 网上书店 买方数据库
  7. MFC多线程失败:Create Instance failed
  8. 外贸网站香港服务器,香港云服务器更适合小型外贸网站使用
  9. C keyword register 并讨论共同使用嵌入式汇编
  10. jquery validate 表单验证
  11. 编程语言入门及进阶、设计模式、面向对象书籍
  12. Axure RP 8: 注册码(亲测可用)
  13. android批量发送短信
  14. FITS基本文件格式
  15. 通过 Dockerfile 搭建标注工具 brat 的镜像
  16. MATLAB实现最小二乘法
  17. [渣翻]从零开始写一个时序数据库
  18. php中car是什么意思,car是什么意思_car在线翻译_英语_读音_用法_例句_海词词典
  19. PDF文本框更改字体大小
  20. webpack/vue-cli 中的 publicPath / 和 ./ 的区别

热门文章

  1. BNB、HT、OKB全面估值分析——平台币还能涨多少倍?
  2. deepin 20 推荐邮件客户端 Bluemail 邮箱
  3. #Geek Founders# 蒋涛的 CES 2016 感受 - Day 4 (总结版)
  4. jQuery中的Sizzle引擎分析
  5. 禁用Insert按键
  6. 【深度学习之美】一入侯门“深”似海,深度学习深几许(入门系列之一)
  7. JS控制台报错Uncaught TypeError Cannot read properties of null (reading ‘appendChild‘);的解决方法
  8. 如何将接近开关作为限位开关连接?
  9. 国外著名博客 Gizmodo 博主 Brian Lam 访谈录
  10. 鸿蒙时期电视剧,《我的时代,你的时代》|电视剧简介