Vue通过getAction的finally来最大程度避免影响主数据呈现问题


Posted in Javascript onApril 24, 2020

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 == 'HUICHUXING,BOSSKG' || record.product == 'BOSSKG,HUICHUXING'){
   product = '惠出行,BOSS开工';
  }else{
   product = '业务未开通';
  }
  this.model = Object.assign({}, record);
  this.model.product = product;
  this.visible = true;
  this.$nextTick(() => {
   this.form.setFieldsValue(pick(this.model,'enterpriseName','address','legalName','email','phone','userName','licensePic',
    'ipList','taxpayerNo','billAddress','bankName','bankCardNo','billPhone','product'));
  });
 }
}

我的想法很清晰,recoord代表的是指定的企业的信息,在this.visible = true;前,给this.model.userName属性重新赋值。

服务端接口很快实现了。不过,修改这个vue页面的时候倒是吃力了。对于Jeecg-boot 的这套前段UI框架Ant Design Jeecg Vue,虽然已经跟了几个项目了,依然是一知半解。

自然是通过getAction来赋值了,然并卵。因为getAction是异步请求,所以,肯定是不起作用了。

那么,该怎么办呢?

一个小伙给出了方案,当然,这也是我不得已而为之的方案————在getAction请求成功的方法里,给userName赋值,然后,再进行页面渲染。

methods: {

 enterpriseInfo (record) {
  ......
  this.visible = true;
  getAction('/ent/getEnterpriseLoginAcc?enterpriseId=' + record.enterpriseId).then(response => {
   record.userName = response.result.loginAcc;
   this.model = Object.assign({}, record);
   this.$nextTick(() => {
    this.form.setFieldsValue(pick(this.model, 'enterpriseName', 'address', 'legalName', 'email', 'phone', 'userName', 'licensePic', 'taxpayerNo', 'billAddress', 'bankName', 'bankCardNo', 'billPhone', 'product', 'industryType1', 'industryType2'));
   });
  });
  
 }
}

这样虽然实现了,但与我的想法有些不一致。怎么讲?假如说,执行getAction出问题,那么整个页面将无法呈现。这岂不因小失大!

后来,问一个前端的同事,终于指点了迷津。 同事发的如下这个示意图,提示可在1处、2处做文章。

Vue通过getAction的finally来最大程度避免影响主数据呈现问题

当然,经过尝试,发现类似getAction\postAction\putAction除了.then()、.catch()外,还有finally()。那看来,在没有其他方案的情况下,————也许没有其他方案了————这是最好的方案了,也符合我的期望。

methods: {

 enterpriseInfo (record) {
  ......
  this.visible = true;
  this.$nextTick(() => {
   getAction('/ent/getEnterpriseLoginAcc?enterpriseId='+record.enterpriseId).then(res => {
    if(res.success) {
     this.model.userName = res.result.loginAcc;
    }
   }).finally(() => {
    // console.log("userName= "+this.model.userName)
    this.form.setFieldsValue(pick(this.model,'enterpriseName','address','legalName','email','phone','userName','licensePic',
     'ipList','taxpayerNo','billAddress','bankName','bankCardNo','billPhone','product','industryType1','industryType2'));

   });

  });
  
 }
}

到此这篇关于Vue通过getAction的finally来最大程度避免影响主数据呈现的文章就介绍到这了,更多相关vue getAction finally内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
Mar 22 Javascript
javascript 二分法(数组array)
Apr 24 Javascript
JS面向对象编程浅析
Aug 28 Javascript
对于Form表单reset方法的新认识
Mar 05 Javascript
Area 区域实现post提交数据的js写法
Apr 22 Javascript
JQuery EasyUI 数字格式化处理示例
May 05 Javascript
Grunt入门教程(自动任务运行器)
Aug 06 Javascript
javascript实现用户点击数量统计
Dec 25 Javascript
JS实现的数字格式化功能示例
Feb 10 Javascript
Vue2仿淘宝实现省市区三级联动
Apr 15 Javascript
jQuery实现图片简单轮播功能示例
Aug 13 jQuery
详解babel升级到7.X采坑总结
May 12 Javascript
小程序开发之模态框组件封装
Apr 23 #Javascript
详解Vue3中对VDOM的改进
Apr 23 #Javascript
微信小程序实现滑动操作代码
Apr 23 #Javascript
微信小程序图片右边加两行文字的代码
Apr 23 #Javascript
Vue中通过vue-router实现命名视图的问题
Apr 23 #Javascript
利用原生JS实现欢乐水果机小游戏
Apr 23 #Javascript
JS eval代码快速解密实例解析
Apr 23 #Javascript
You might like
php防止SQL注入详解及防范
2013/11/12 PHP
twig里使用js变量的方法
2016/02/05 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
jQuery Tools tab使用介绍
2012/07/14 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
Bootstrap table表格初始化表格数据的方法
2018/07/25 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
关于JS解构的5种有趣用法
2019/09/05 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
Python 编码处理-str与Unicode的区别
2016/09/06 Python
Python内存管理方式和垃圾回收算法解析
2017/11/11 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
python 图像平移和旋转的实例
2019/01/10 Python
python利用Tesseract识别验证码的方法示例
2019/01/21 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
Python发送邮件实现基础解析
2020/08/14 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
Python用户自定义异常的实现
2020/12/25 Python
html5菜单折纸效果
2014/04/22 HTML / CSS
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
低碳环保口号
2014/06/12 职场文书
社区国庆节活动总结
2015/03/23 职场文书
html5调用摄像头实例代码
2021/06/28 HTML / CSS