2020/10/26近期工作总结-vue开发

2023-11-20

1. 父子传参

父传子:

方法1:
在父组件中加入子组件,给子组件绑定需要传递的值


import Policy from './components/policy'; // 保单信息组件

components: {
	Policy
},

<Policy :sign="true"/>

子组件接收:


props: ['sign'],
// 子组件中调用父组件传的值
<el-form class="mar-top10" :disabled="sign" :model="policyInformation">

方法2:

利用vuex设置全局变量(这么直接写不推荐,写法需要改进。同时如果每次请求都对vuex 进行赋值,一定会影响性能)


this.$store.state.dataEdorList = res.body.data.dataEdorList; // 保全受理-保全项信息

子组件接收:


import { mapState } from 'vuex';

computed: {
    ...mapState([ 'dataEdorList '])
},
<el-table size="mini" align='center':data="dataEdorList">

方法3:

通过路由来传递参数,下面这个例子的写法在打开新的标签页的同时也传递参数


let routeDetail = this.$router.resolve({
    path: `/edorseBusiness/preservationDetail/EdorseBusinessDetail${edorTypeCode}`, // 保全项动态拼接
    query: { onlyReadSign: true, navtabs: true } // 项目里通过传这个navtabs: true这个参数 来隐藏菜单栏
});
window.open(routeDetail.href, '_blank');

如果无需打开新的标签页可以这么写;


this.$router.push(`/edorseBusiness/preservationDetail/EdorseBusinessDetail${edorTypeCode}`, query: {onlyReadSign: true})

跳转的路由(组件/子组件)接收参数


mounted() {
	this.onlyReadSign = this.$route.query.onlyReadSign; //true: 编辑,false: 只显示
}

子传父:

方法1:
通过$emit,子组件中代码


this.$emit('payShowSign', true); // 这里我传的是一个true ,其实可以传递任何值(比如对象、数组等等),事先声明好要传递的值即可

父组件接收:

 // 父组件通过getPayShowSign事件拿到子组件返回的值
<ProjectSave ref="ProjectSave" @payShowSign="getPayShowSign" />

getPayShowSign(data) {
    this.payShowSign = data;// console.log('收付费是否显示的标志', this.payShowSign);
    this.detailQuery(); // 在执行这个事件的同时,可以做别的操作
},

方法2:
通过父组件通过$refs拿到子组件中的方法(拿到子组件方法中的 return值),子组件中代码:


applicationConf() {
    let queryHome = JSON.parse(window.decodeURIComponent(atob(this.$route.query.queryHome)));
    let applicationConfData = {
        edorAcceptNo: queryHome.edorAcceptNo, // 保全受理号
        contNo: queryHome.contNo, // 合同号
        getPayForm: this.pageData.getPayForm, // 收付费方式
        payGetName: this.pageData.payGetName, // 补退费人
        bankCodeProvince: this.pageData.provincebank, // 开户行省
        bankCodeCity: this.pageData.citybank, // 开户行市
        bank: this.pageData.bankAccountCode, // 开户银行
        bankAccNo: this.pageData.bankAccountNo, // 银行账户
        accName: this.pageData.bankAccountName, // 户名
        idType: this.pageData.typeName, // 证件类型
        idNo: this.pageData.number, // 证件号码
        relaToAppnt: this.pageData.relaToAppnt, // 与投保人关系
        cardType: this.pageData.cardremake, // 卡折标记
        operator: this.userInfo.applyerCustomerNo, // 操作员
        edorRiskFlag: this.pageData.riskRadio, // 保全操作风险
        sendType: this.pageData.printItemList, // 批单送达方式
        email: this.pageData.email, // 邮箱
        mark: '', // 备注
        flag: '' // 申请资料是否齐全
    };
    return applicationConfData; // 这是要返回给父组件的值
},

父组件接收:


<Payment ref="payment"/> // 引用的子组件
import Payment from './components/payment'; // 收付费方式信息

let params = this.$refs['payment'].applicationConf(); // 在方法里给变量赋值,拿到子组件返回的值

方法3:
同前面写到的父传子写到的路由传参:

方法4:
同前面写到的vuex:

未完!待续!先上班了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2020/10/26近期工作总结-vue开发 的相关文章

随机推荐