组件
popPicker.vue
<template> <div> <mt-popup class="popPanel" position="bottom" v-model="currentVal" :closeOnClickModal="clickfalse" > <div class="pickerBtns clearBt" style="overflow: hidden;"> <span class="float_l" @click="PopParent(0)">取消</span> <span class="float_r" @click="PopParent(1)">确认</span> </div> <mt-picker :slots="slots" value-key="name" @change="onValuesChange"></mt-picker> </mt-popup> </div> </template> <script> /* eslint-disable */ export default { name: "popPicker", data() { return { slots: [], currentVal: true, clickfalse: false, chargePeriodArr1: this.chargePeriodArr, insuranceTimeArr1: this.insuranceTimeArr, cityarr : [], districtarr : [], payUserMap1:this.payUserMap, //支付页相关信息 result: [ {name:"北京市",value:'110000'}, {name:"北京市",value:'110100'}, {name:"东城区",value:'110101'}, ], }; }, props:{ popType: Number, chargePeriodArr:Array, insuranceTimeArr:Array, ageList:Array, natureList :Array, payUserMap:Array, taxpayerIdenNumberList:Array }, created() { this.slots=[ { flex: 1, values: [], className: "slot1", textAlign: "center", // defaultIndex: 43 } ] if (this.popType == 0) {//开户银行省 this.slots=[ { flex: 1, values: [], className: "slot1", textAlign: "center" } ] this.slots[0].values = this.payUserMap1; // this.slots[2].values = this.CONFIG.addressList[0].children; }else if (this.popType == 2) {//与被保人关系 this.slots[0].values = this.payUserMap1; }else if (this.popType == 1) {//市区 this.slots=[ { flex: 1, values: [], className: "slot1", textAlign: "center" } ] this.slots[0].values = this.payUserMap1; } }, methods: { onValuesChange(picker, values) { this.result = values[0]; }, PopParent(status) { var data = { flag: false, value: status == 0 ? this.resultCity : this.result }; if(data != ''){ this.$emit("theEvToParent", data); } } } }; </script> <style scoped> .pickerBtns{ padding: 0; margin: 0; height: 30px; line-height: 30px; background: #f7f7f7; text-align: center; padding: 10px; color: #3d99de; font-size: 14px; } .float_l{ float:left; } .float_r{ float:right; } .clearBt{ clear:both; } .pickerBtns span { padding: 10px; color: #3d99de; font-size: 14px; } .popPanel { 100%; max- 940px; } </style>
pay.vue
<!-- 自定义组件popPicker --> <popPicker v-if="selectFlag" :popType="popType" @theEvToParent="doChange" class="ntm_picker" v-bind:payUserMap="payUserMap" ></popPicker> import popPicker from "@/utils/popPicker"; export default { name: "Pay2", components: { Subbar2, popPicker }, }
在js方法中,将选择的数组内容赋值给this.payUserMap
for (var i in this.provinceList) { var obj = { name: "", value: "" }; obj.name = this.provinceList[i].provinceName; obj.value = this.provinceList[i].provinceCode; this.provinceListM.push(obj); } console.log(this.provinceListM); 注意----要保持这种结构(name,value)