美文网首页
关于ElementUI el-select 绑定对象的探索

关于ElementUI el-select 绑定对象的探索

作者: spring_zto | 来源:发表于2019-11-10 17:36 被阅读0次

    为了简单,直接引用ElementUI官网的例子,当需要绑定一个对象的时候直接给el-option的value属性设置为遍历集合的一个对象如下:

    <template>
    <el-select v-model="value3" disabled placeholder="请选择">
        <el-option
          v-for="item in options"
          :key="item.value"
          :label="item.label"
          :value="item">        <----------------此处 item 为一个对象--------------->
        </el-option>
      </el-select>
    </template>
    <script>
      export default {
        data() {
          return {
            options: [{
              value: '选项1',
              label: '黄金糕'
            }, {
              value: '选项2',
              label: '双皮奶'
            }, {
              value: '选项3',
              label: '蚵仔煎'
            }, {
              value: '选项4',
              label: '龙须面'
            }, {
              value: '选项5',
              label: '北京烤鸭'
            }],
            value3: ''
          }
        }
      }
    </script>
    

    程序能够正常执行
    然后更改options对象的数据结构如下

    options: [{
              name: '选项1',
              label: '黄金糕'
            }, {
              name: '选项2',
              label: '双皮奶'
            }, {
              name: '选项3',
              label: '蚵仔煎'
            }, {
              name: '选项4',
              label: '龙须面'
            }, {
              name: '选项5',
              label: '北京烤鸭'
            }]
    

    程序运行后发现所有下拉值为蓝色,也就是选中的状态。如下:


    image.png

    然后查了一下官网中api中有提到value-key这个属性,当绑定对象类型时必填,如:


    image.png

    接下来改造我们的代码,添加value-key为更改options集合对象后,对象所包含的name属性,如:

    <el-select v-model="value3" disabled placeholder="请选择" value-key="name"><----------------指定value-key为数组对象中对象的name属性--------------->
        <el-option
          v-for="item in options"
          :key="item.value"
          :label="item.label"
          :value="item">        <----------------此处 item 为一个对象--------------->
        </el-option>
      </el-select>
    

    然后页面中显示出了正确结果,即只有一项选中态,如:


    image.png

    到这里就让我产生了困惑,为啥第一次没有指定value-key却也是正确的呢,于是,我打开了elemnt-ui的源码,其中在select.vue文件中找到了value-key定义的地方


    image.png
    终于真相大白,原来value-key默认值为value,所以在最上面options数据项结构为labe、value时能够正常显示,但是如果换成name,label就无法正常获得选中的值了。此时就需要去指定value-key为数据项结构的name或label属性(总之需要提供一个包含的属性名)
    至此,为自己做一个记录,也为遇到相关问题的人提供一些帮助。

    相关文章

      网友评论

          本文标题:关于ElementUI el-select 绑定对象的探索

          本文链接:https://www.haomeiwen.com/subject/gyeabctx.html