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基础整理1
Dec 06 Javascript
js 取时间差去掉周六周日实现代码
Dec 25 Javascript
实现web打印的各种方法介绍及实现代码
Jan 09 Javascript
js禁止页面使用右键(简单示例代码)
Nov 13 Javascript
详解JavaScript中数组的reduce方法
Dec 02 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
Mar 09 Javascript
React学习之事件绑定的几种方法对比
Sep 24 Javascript
微信小程序 input输入及动态设置按钮的实现
Oct 27 Javascript
详解Vue This$Store总结
Dec 17 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
Feb 12 Javascript
javascript单张多张图无缝滚动实例代码
May 10 Javascript
vue使用watch监听属性变化
Apr 30 Vue.js
小程序开发之模态框组件封装
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中数组的分组排序实例
2014/06/01 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
PHP面向对象详解(三)
2015/12/07 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
用js实现博客打赏功能
2016/10/24 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
Python解析树及树的遍历
2016/02/03 Python
用yum安装MySQLdb模块的步骤方法
2016/12/15 Python
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
手写一个python迭代器过程详解
2019/08/27 Python
python3 配置logging日志类的操作
2020/04/08 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
写给老师的表扬信
2014/01/21 职场文书
租赁意向书范本
2014/04/01 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
警告通知
2015/04/25 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书
创业计划书之青年旅馆
2019/09/23 职场文书
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android