element UI 中 el-select 的 value-key 的用法

1,178 阅读1分钟

正常情况下的el-select:

<el-select 
    v-model="obj.like" 
    placeholder="请选择"
> 
    <el-option 
        v-for="item in options" 
        :key="item.value" 
        :label="item.label" 
        :value="item.value"
    > 
    </el-option> 
</el-select>
<script> 
export default { 
    data() { 
        return { 
            obj: {
                like: ''
            },
            options: [
                { value: 'HTML', label: 'HTML' }, 
                { value: 'CSS', label: 'CSS' }, 
                { value: 'JavaScript', label: 'JavaScript' }
            ],
            } 
        } 
    } ,
    methods: {
        changeFun( val ) {
            console.log(val) // 输出 options 中选中项的 value
        }
    }
</script>

加了 value-key 的 el-select 用法

(改动处前方添加*号)

改动处为:
el-select 新增 :value-key="value"
el-option :value="item.value" 修改为 :value="item"

<el-select 
    v-model="obj.like" 
*   :value-key="value"
    placeholder="请选择"
> 
    <el-option 
        v-for="item in options" 
        :key="item.value" 
        :label="item.label" 
*       :value="item"
    > 
    </el-option> 
</el-select>
<script> 
export default { 
    data() { 
        return { 
            obj: {
                like: ''
            },
            options: [
                { value: 'HTML', label: 'HTML' }, 
                { value: 'CSS', label: 'CSS' }, 
                { value: 'JavaScript', label: 'JavaScript' }
            ],
            } 
        } 
    } ,
    methods: {
        changeFun( val ) {
            console.log(val) // 输出 options 中选中项的 对象
                             // 如 :{ value: 'JavaScript', label: 'JavaScript' }
                             // 这样就能轻易获取选中的对象了
        }
    }
</script>

情况说明

value-key默认绑定value,所以如果你的options数组元素的对象中的有效值(传给后端的值,就叫他有效值把)为value,那么不写value-key也是ok的。

但如果你的有效值是其他字段,比如id什么的,那必须注明:value-key="id",不然找不到value的话,value值就是undefinedoptions中每一个对象的value都是undefined,都是一样的,那么选中一个,其他下拉选项也会显示【被选中】的状态