对话框包含select框双向绑定

20210927152815

//关于zhsq小区页面的编辑界面弹出框双向绑定的一些细节:
因为弹出的对话框有下拉框部分、双向绑定下拉框数据时又要监听数据、与表格普通数据分开双向绑定
所以在computed中就要使用get()、set(val)来实现双向绑定
相关代码:
<el-form :model=form>
	<el-form-item label="公司名称" prop="companyDept">
	  <el-select
	    v-model="companyShow"
	    placeholder="请选择公司名称"
	    size="small"
	    clearable
	  >
	  	<!--  遍历对象时,item是每项对象的值、i是每项对象的键名,第三个参数是索引 -->
	    <el-option 
	      v-for="(item, i) in deptlist"
	      :key="i"
	      :label="item"
	      :value="i"
	    />
	  </el-select>
	</el-form-item>
</el-form>
<script>
import { translationDictionary } from "@/utils/translationDictionary.js"
export default {
    data() { 
        form: {},
        deptlist: {},
    },
    created() { this.getDeptList() },
    methods: {
        //获取select框下options绑定的数据对象集合
        getDeptList() {
      		listDept().then((response) => {
        		let object = {}
        		response.rows.forEach((el) => {
          			object[el.deptId] = el.deptName;
        		})
        		this.deptlist = object
      		})
    	},
    },
    computed: {
        companyShow: {
            get: function () {
        		if (this.form1.companyDept == undefined) return;
        		return this.translationDictionary(this.form1.companyDept, this.deptlist, 2);
      		},
      		set: function (value) {
        		if (value == undefined) return;
        		this.form1.companyDept = this.translationDictionary(value, this.deptlist, 1);
        		console.log(this.form1.companyDept); //得到数字字符串
      		}
        }
    },
}
</script>
//封装的一个select转换方法
export function translationDictionary(value, arr, state) {
  if (state == 1) {
    return TextToNum(value, arr);
  } else if (state == 2) {
    return NumToText(value, arr);
  }
}

// 文字转数字
function TextToNum(text, arr) {
  if(arr.length){
    return arr.indexOf(arr[text]);
  }else{
    return text;
  }
}
// 数字转文字
function NumToText(num, arr) {
  return arr[num];
}

// 从字典中拿数据转换为数组
export function DictionaryToArr(data) {
  let arr = [];
  data.forEach(el => {
    arr.push(el.dictLabel);
  });
  return arr;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只管挖坑不管埋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值