欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 检查w-form-select 组件是否正确透传了 visible-change 事件

检查w-form-select 组件是否正确透传了 visible-change 事件

2025/2/25 1:02:41 来源:https://blog.csdn.net/m0_65152767/article/details/145266030  浏览:    关键词:检查w-form-select 组件是否正确透传了 visible-change 事件

文章目录

      • 1. 下拉框的组件
      • 2. 点击下拉框时的逻辑
        • (1)`handleVisibleChange` 方法
        • (2)`getIdentifies` 方法
      • 3. 选择关联识别点时的逻辑
        • (1)`onRelatedChange` 方法
      • 4. 相关 UI 更新
      • 5. 总结

在这段代码中,点击“关联识别点”下拉框时,会触发一系列逻辑。以下是详细的逻辑分析:


  • 点击关联识别点下拉框没有发送请求,应该检查 w-form-select 组件是否正确透传了 visible-change 事件。
        <el-selectv-elsev-model="val":multiple="multiple"filterableclearable:placeholder="placeholder || label || tip":allow-create="allowCreate":default-first-option="defaultFirstOption":style="inputWidth ? `width: ${inputWidth};` : `width: 100%;`"@input="value => $emit('input', value)"@change="value => $emit('change', value)"@visible-change="value => $emit('visible-change', value)">

1. 下拉框的组件

“关联识别点”下拉框使用的是 w-form-select 组件,其定义如下:

<w-form-selectv-model="form.relatedIds"label="关联识别点"label-width="120px":operate-type="operateType":list="identifies"option-label="id"option-value="id":multiple="true"input-width="100%"@visible-change="handleVisibleChange"@change="onRelatedChange"
/>
  • v-model="form.relatedIds":绑定到 form.relatedIds,用于存储选择的关联识别点 ID。
  • :list="identifies":下拉框的选项数据来自 identifies 数组。
  • @visible-change="handleVisibleChange":当下拉框显示或隐藏时触发 handleVisibleChange 方法。
  • @change="onRelatedChange":当选择的值发生变化时触发 onRelatedChange 方法。

2. 点击下拉框时的逻辑

当点击“关联识别点”下拉框时,会触发以下逻辑:

(1)handleVisibleChange 方法
private handleVisibleChange(visible: boolean) {console.log('handleVisibleChange triggered', visible);if (visible) {console.log('calling getIdentifies with form.type:', this.form.type);this.getIdentifies();}
}
  • 作用:当下拉框显示时(visibletrue),调用 getIdentifies 方法加载关联识别点数据。
  • 触发时机:每次点击下拉框时都会触发。
(2)getIdentifies 方法
private async getIdentifies() {const res: any = await qlistAll({type: this.form.type,page: 0,size: 3000});if (res?.data) {this.identifies = res.data.filter((item: any) => item.id !== this.form.id); // 过滤掉当前编辑的项// 如果有已选择的关联识别点,更新描述if (this.form.relatedIds && this.form.relatedIds.length > 0) {const lastSelectedId = this.form.relatedIds[this.form.relatedIds.length - 1];const selectedItem = this.identifies.find((item: any) => item.id === lastSelectedId);this.relatedDescription = selectedItem ? selectedItem.description : '';}}
}
  • 作用:从后端获取关联识别点数据,并更新 identifies 数组。
  • 过滤逻辑:过滤掉当前编辑的识别点(item.id !== this.form.id),避免选择自身。
  • 更新描述:如果已有选择的关联识别点,更新 relatedDescription 显示描述。

3. 选择关联识别点时的逻辑

当从下拉框中选择一个或多个关联识别点时,会触发以下逻辑:

(1)onRelatedChange 方法
private onRelatedChange(value: any) {if (value && value.length > 0) {// 获取最后选择的识别点const lastSelectedId = value[value.length - 1];const selectedItem = this.identifies.find((item: any) => item.id === lastSelectedId);this.relatedDescription = selectedItem ? selectedItem.description : '';} else {this.relatedDescription = '';}
}
  • 作用:当选择的值发生变化时,更新 relatedDescription 显示最后一个选择的识别点的描述。
  • 逻辑
    • 如果选择了识别点(value.length > 0),获取最后一个选择的识别点 ID,并从 identifies 数组中查找对应的描述。
    • 如果没有选择识别点(value.length === 0),清空 relatedDescription

4. 相关 UI 更新

  • 关联识别点描述
    • 当选择关联识别点时,relatedDescription 会更新,并显示在 w-form-textarea 组件中。
    • 代码如下:
      <w-form-textareav-model="relatedDescription"label="识别点描述"label-width="120px":operate-type="'view'"input-width="100%":disabled="true":auto-size="{ minRows: 2, maxRows: 4 }"class="description-textarea"
      />
      

5. 总结

  • 点击下拉框时
    1. 触发 handleVisibleChange 方法。
    2. 调用 getIdentifies 方法,从后端加载关联识别点数据。
    3. 更新 identifies 数组,并过滤掉当前编辑的识别点。
  • 选择关联识别点时
    1. 触发 onRelatedChange 方法。
    2. 更新 relatedDescription,显示最后一个选择的识别点的描述。
  • UI 更新
    • 关联识别点描述会实时显示在文本框中。

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词