element下拉框中动态绑值

文章描述了在Vue.js应用中遇到的下拉框动态绑定数据的问题,具体是由于字段名不匹配导致的数据无法正确显示。作者通过调整字段名并正确设置`v-model`和`v-for`指令实现了与后台传递数据的动态绑定,确保了书本类型和状态的下拉框能正确显示和选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 话不多说,我们就直接进入正题

  1. 首先,我们先看到下拉框这一栏 (Form 表单 之 Select下拉框列表)

原始页面

<el-row style="margin-bottom: 16px;">
      <el-col :span="6" style="padding-right: 20px;">
        <h3>书本名称:</h3>
        <el-input v-model="query.bookName" placeholder="请输入书本名称"></el-input>
      </el-col>
      <el-col :span="6" style="padding-right: 20px;">
        <h3>书本类型名称:</h3>
        <el-select v-model="query.bookTypeName" placeholder="请选择书本类型">
          <el-option v-for="item in BookTypeList" value="无" label=" ">
          </el-option>
        </el-select>
      </el-col>
      <el-col :span="6" style="padding-right: 20px;">
        <h3>书本状态:</h3>
        <el-select v-model="query.bookState" placeholder="请选择书本状态">
          <el-option v-for="item in BookStateList" value="无" label=" "></el-option>
        </el-select>
      </el-col>
</el-row>
 export default {
    data() {
      return {
        /* data:[]后端获取到的数据列表。option表格配置项.form 表单*/
        data: [],
        form: {},
        query: {},
        BookTypeList: [],
        BookStateList: [{
          label: '上架',
          value: 0
        },{
          label: '下架',
          value: 1
        }],
      },
    mounted() {
      this.bookTypeList()
    },
    methods:{
      bookTypeList() {    // 获取书本类型列表
        let param = {
          data: {}
        }
        //获取书本类型列表的接口
        API.queryBookTypeList(param).then(res => {
          if (res.data.code === 0) {
            this.BookTypeList = res.data.data.list
          }
        })
      },
    }

    },

下拉框动态绑值(书本类型是动态的值,由后台传递过来的,通过书本类型的接口,动态查询绑值)

问题一:

我当时绑定上去的是空值,后来才打开控制台发现data:{}中的值是空值😂;其原因就是我绑值的时候字段对不上导致的(我写的是booktype,然后原字段是type)

动态绑值

<el-row style="margin-bottom: 16px;">
      <el-col :span="6" style="padding-right: 20px;">
        <h3>书本名称:</h3>
        <el-input v-model="query.bookName" placeholder="请输入书本名称"></el-input>
      </el-col>
      <el-col :span="6" style="padding-right: 20px;">
        <h3>书本类型名称:</h3>
        <el-select v-model="query.bookTypeName" placeholder="请选择书本类型">
          <el-option v-for="item in BookTypeList" :key="item.id" :value="item.id" label="item.type">
          </el-option>
        </el-select>
      </el-col>
      <el-col :span="6" style="padding-right: 20px;">
        <h3>书本状态:</h3>
        <el-select v-model="query.bookState" placeholder="请选择书本状态">
          <el-option v-for="item in BookStateList" :key="item.value" value="item.value" label="item.label"></el-option>
        </el-select>
      </el-col>
</el-row>

示例效果:

### 如何通过 Element UI下拉框 (Select) change 事件获取用户选中的 在使用 Element UI 的 `el-select` 组件时,可以通过监听其 `change` 事件来捕获用户的选中操作。当用户选择某个选项时,该事件会触发并递所选作为参数。 如果仅需获取选中的(通常是定的键),可以直接接收 `change` 事件返回的参数[^1]。然而,在某些场景下可能还需要获取其他附加信息(如标签名或其他自定义属性)。此时可通过如下方式实现: #### 获取单选模式下的选中 对于单选模式,`change` 事件默认只返回当前选中的(即定的数据模型对应的键)。如果希望同时获取更多字段的信息(例如 `label` 或者其他扩展数据),可以在回调函数中访问整个对象。以下是具体代码示例: ```javascript methods: { selectChanged(selectedValue) { console.log('Selected Value:', selectedValue); // 输出的是定的 key const selectedItem = this.options.find(option => option.value === selectedValue); if (selectedItem) { console.log('Label:', selectedItem.label); // 手动查找对应 label this.ruleForm.processReview = selectedItem.label; } } } ``` 上述代码片段展示了如何利用数组方法 `.find()` 来定位具体的选项对象,并从中提取所需的额外信息。 #### 多选模式下的处理逻辑 如果是多选模式 (`multiple=true`),则每次触发 `change` 事件都会接收到一个包含所有已选的数组。为了进一步获取这些关联的对象及其详细信息,可采用类似的策略遍历匹配每一个条目[^2]: ```javascript methods: { selectUser(selectedValues) { const selectedItems = selectedValues.map(value => this.options.find(option => option.value === value) ).filter(Boolean); console.log('All Selected Items:', selectedItems); // 包含完整的对象列表 } } ``` 这里运用了 JavaScript 数组的方法链式调用来完成映射与过滤过程,最终得到一组完整的被选项描述集合。 #### 特殊情况——联动组件间通信 针对更复杂的交互需求比如级联筛选或者跨控件同步状态更新等情况,可以借助自定义事件机制加强子父组件间的协作能力[^4]。下面是一个简单的例子说明怎样创建带双向反馈功能的城市选择插件并与外部环境交换数据流: ```html <template> <div class="example"> <!-- 子组件 --> <provincecity ref="addFormProvince" @selectChange="handleCitySelection"></provincecity> <p>您选择了:</p> <span>{{ province }} - {{ city }}</span> </div> </template> <script> import provincecity from '@/components/ProvinceCity'; export default { components: { provincecity }, data() { return { province: '', city: '' }; }, methods: { handleCitySelection(data) { this.province = data.provinceCode || ''; this.city = data.cityCode || ''; } } }; </script> ``` 此案例演示了一个典型的父子关系通讯流程:子组件发出通知信号携带有效载荷;而顶层容器负责解析消息内容进而调整视图表现形式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值