Vue通过getAction的finally来最大程度避免影响主数据呈现问题
企业信息列表,查看某条记录时,弹窗页里要求展示企业的用户名,而用户名字段不在企业表里。 为此,我们需要修改弹窗页的渲染方法。 methods: { enterpriseInfo (record) { this.form.resetFields(); let product; if(record.product == 'HUICHUXING'){ product = '惠出行'; }else if(record.product == 'BOSSKG'){ product = 'BOSS开工'; }else if(record.product == 'HUICH 在Vue.js应用中,我们经常需要处理异步数据获取,以动态更新视图。在给定的场景中,企业信息列表展示时,弹窗页需要显示企业的用户名,但该字段不在原始的企业表数据中。因此,我们需要在弹窗渲染之前获取额外的信息。`enterpriseInfo` 方法展示了如何根据产品类型设置用户名,并在`visible`属性设为`true`以显示弹窗。 最初,尝试使用`getAction`方法来获取服务端的数据,但`getAction`是一个异步操作,它的执行结果可能会延迟,导致在渲染页面时,用户名尚未获取到,从而影响了主数据的呈现。为了解决这个问题,首先尝试在`getAction`的`then`回调中给`userName`赋值,然后设置表单字段。这种方式虽然能解决问题,但如果`getAction`出现错误,会导致整个页面无法正常渲染。 在了解到`getAction`等函数支持`finally`回调后,我们找到了一个更好的解决方案。`finally`回调无论请求成功或失败都会被执行,因此可以在其中确保设置`userName`,这样即使请求出现问题,也能保证页面的基本呈现,避免了因小失大的情况。改进后的`enterpriseInfo`方法如下: ```javascript methods: { enterpriseInfo (record) { this.form.resetFields(); // ... 设置product的逻辑 ... this.model = Object.assign({}, record); this.model.product = product; this.visible = true; // 在这里使用finally来确保无论请求结果如何,都会进行渲染 this.$nextTick(() => { getAction('/ent/getEnterpriseLoginAcc?enterpriseId=' + record.enterpriseId) .then(res => { if (res.success) { this.model.userName = res.result.loginAcc; } }) .catch(err => { console.error('获取用户名失败:', err); // 处理错误,可能设置默认值或提示用户 }) .finally(() => { // 无论请求成功或失败,此处的代码都会执行,确保渲染 this.form.setFieldsValue(pick(this.model, 'enterpriseName', 'address', 'legalName', 'email', 'phone', 'userName', 'licensePic', 'taxpayerNo', 'billAddress', 'bankName', 'bankCardNo', 'billPhone', 'product', 'industryType1', 'industryType2')); }); }); } } ``` 在这个改进版的方法中,我们确保在`finally`回调中设置表单的字段值,这样无论异步请求的结果如何,用户名(如果获取成功)都会被正确地显示,同时页面的其他部分不会受到影响。这样的处理方式提高了代码的健壮性,确保了用户体验的一致性。在实际开发中,对于涉及异步数据获取和界面渲染的情况,我们应该充分利用`finally`这样的机制来处理可能出现的问题,以达到最佳的用户体验。
- 粉丝: 7
- 资源: 916
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 客户需求快速小程序项目开发技巧
- java项目,课程设计-医疗服务系统.zip
- YOLO 注释风力涡轮机表面损坏-以 YOLO 格式注释风力涡轮机表面损伤 一万六千多文件
- 第一个适用于 Java 的 REST API 框架.zip
- Nvidia GeForce GT 1030显卡驱动(Win7)
- TIA PORTAL V17 UPD8- 更新包(最新版本2024.09)-链接地址.txt
- 示例应用程序展示了客户端和服务器上 JavaFX 和 Spring 技术的集成.zip
- Screenshot_2024-11-25-14-29-06-21.jpg
- MagicEXIFTool.zip
- fontawesome-webfont.woff