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 相关文章推荐
将字符串转换成gb2312或者utf-8编码的参数(js版)
Apr 10 Javascript
Jquery实现显示和隐藏的4种简单方式
Aug 28 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
Apr 16 Javascript
javascript 数组去重复(在线去重工具)
Dec 17 Javascript
bootstrap table表格插件使用详解
May 08 Javascript
AngularJS实现单一页面内设置跳转路由的方法
Jun 28 Javascript
10个最优秀的Node.js MVC框架
Aug 24 Javascript
解决layui弹出层layer的area过大被遮挡的问题
Sep 21 Javascript
如何在wxml中直接写js代码(wxs)
Nov 14 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
Apr 20 Javascript
vue的$http的get请求要加上params操作
Nov 12 Javascript
javascript实现拼图游戏
Jan 29 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
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
用php实现选择排序的解决方法
2013/05/04 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
浅析jquery的js图表组件highcharts
2014/03/06 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
2015/12/11 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
Angular 数据请求的实现方法
2018/05/07 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
[01:01:35]Optic vs paiN 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python实现文件按照日期命名的方法
2015/07/09 Python
python从入门到精通(DAY 1)
2015/12/20 Python
python中函数总结之装饰器闭包详解
2016/06/12 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
Python Numpy库datetime类型的处理详解
2019/07/13 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
python用什么编辑器进行项目开发
2020/06/17 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
2020/06/30 Python
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
别名指示符是什么
2012/10/08 面试题
商场主管竞聘书
2014/03/31 职场文书
解除合同协议书
2014/04/17 职场文书
最美孝心少年事迹材料
2014/08/15 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
基层工作经历证明
2015/06/19 职场文书
感恩父母主题班会
2015/08/12 职场文书