如何给iview的Select控件优雅的设置默认值的问题。

1.使用iview的Select控件时发现并不能通过改变v-model的值来设置值。审查元素发现这个控件并非是在原生select的基础上修改的。所以如何优雅的给它赋上初始值?

html部分

<template>
    <Select v-model="model1" style="width:200px">
        <Option v-for="item in cityList" :value="item.value" :key="item.value">{{ item.label }}</Option>
    </Select>
</template>

js部分

<script>
    export default {
        data () {
            return {
                cityList: [
                    {
                        value: 'beijing',
                        label: '北京市'
                    },
                    {
                        value: 'shanghai',
                        label: '上海市'
                    }
                ],
                model1: '默认值'
            }
        }
    }
</script>
阅读 31.4k
5 个回答

iview的Select控件是可以用v-model双向绑定,但是v-model中的值要与value中的值对应

也可以通过placeholder设置默认的显示文字

1.给<Select>添加:label="fooLabel"
fooLabel只会在初始时生效,所以只需要在开始时初始化一下这个fooLabel
**注意:源码也强调了,初始v-model值和fooLabel最好长度相等
2.其后点击搜索得到options新增的label会自动添加,不需要再去操作fooLabel

实例:

<Select
    v-model= "newArr"
    :label= "foolabel'
    multiple
    remote
    ...
>
<Select>

//初始化fooLabel
toggleEditModal(){
    this.newArr = this.editObj.foos.map(foo=>{
        return foo.id
    })

    this.fooLabel = this.editObj.foos.map(foo=>{
        return foo.name
    })
}

附源码图
图片描述

楼主的问题应该是设置Select没有值的时候的默认显示,而默认值应该是给Selectv-model的属性赋予默认值;

设置默认显示用placeholder就可以了

建议用label属性来定义显示的的内容,不要直接写{{}}。
特别是做动态加载内容的时候。。坑爆

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题