el-select值的回显问题:如何使element-ui的下拉框显示label值

我最近在学vue,碰到各种意想不到的小问题,所以想写博客记录一下思路,以下是vue小白遇到问题的一点思考,成功解决问题的方法在文章最后。

这段时间在用vue+element写前端项目,碰到了一个小问题,就是前端通过接口去请求后台数据,然后把数据渲染在页面上,element的下拉框el-select出现了一点儿问题
本来拿到性别sex的数据再渲染到页面上应该是这样的:
理想结果
结果却是这样的:
实际结果
我写的代码是这样的:
el-select值的回显问题:如何使element-ui的下拉框显示label值_第1张图片
刚开始我的思路是清除缓存,重新运行项目,但是实际并没有什么用o(╥﹏╥)o

我突然想起来vue可以利用filter过滤数据,于是,增加以下代码

filters:
{
		sexFilter(val) {
        return val === 1 ? '男' : val === 2 ? '女' : '未知';
}

		
			
			
		

然后发现传给后端的值变成了中文——“男”,此路不通,再换一条!
我想起来还可以利用计算属性computed来过滤数据,于是代码改写成这样:

computed: {
			 temp:{
				 sex: {
				      get: function () {
				       		 return this.temp.sex === 1 ? '男' : this.temp.sex === 2 ? '女' : '未知';
				      },
				       set: function (value) {
				        	this.temp.sex = value === '男' ? 1 : 2
				       }		    	
		  		 }
			}   
	  },

以及这样

computed: {
			'temp.sex':{
			      get: function () {
			        	return this.temp.sex === 1 ? '男' : this.temp.sex === 2 ? '女' : '未知';
			      },
			       set: function (value) {
			        	this.temp.sex = value === '男' ? 1 : 2
			       }		    	
		  	 }
	  },

结果还是不行!!!
作为一个vue小白,我累了,我的心已经死了,已经不会再爱了o(╥﹏╥)o
但是天无绝人之路,无意间在SegmentFault上发现一篇回答,我又有了新思路
参考思路

后端传给前端的value值是Number类型的,但是el-select绑定的value值是String类型的,value值的类型不匹配,所以拿到数据显示在页面上会出现一些小问题,所以我们需要对value的类型进行转换,这位大哥的思路是这样的:
el-select值的回显问题:如何使element-ui的下拉框显示label值_第2张图片
但是我觉得这样有点麻烦,而且并没有直接处理value值,而是加了个按钮绑定函数去处理,不太符合我的需求,但又是一个很好的思路——转换value值的类型。

我又想起了v-bind这个神奇的属性,于是改写代码:
改写后的代码
哈哈哈哈哈哈,神奇的事情发生了,下拉框果然只显示label值,而不是显示value值了。
作为一个vue小白,解决问题过于激动了,各位不要见怪哈o( ̄︶ ̄)o

下拉框的回显问题虽然不会报错,但是会影响页面美观,页面优化的时候还是要解决这个问题。

你可能感兴趣的:(el-select值的回显问题:如何使element-ui的下拉框显示label值)