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 相关文章推荐
jquery 笔记 事件
Nov 02 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
Jul 10 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
Oct 17 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
Mar 11 Javascript
Knockoutjs 学习系列(二)花式捆绑
Jun 07 Javascript
vue 实现复制内容到粘贴板clipboard的方法
Mar 17 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 Javascript
angular6 填坑之sdk的方法
Dec 27 Javascript
利用Vue实现一个markdown编辑器实例代码
May 19 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
Jun 20 jQuery
基于小程序请求接口wx.request封装的类axios请求
Jul 02 Javascript
element-ui中el-upload多文件一次性上传的实现
Dec 02 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 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
openPNE常用方法分享
2011/11/29 PHP
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
thinkphp普通查询与表达式查询实例分析
2014/11/24 PHP
php有道翻译api调用方法实例
2014/12/22 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
小程序api实现promise封装过程解析
2019/11/21 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
python实现web方式logview的方法
2015/08/10 Python
python 与服务器的共享文件夹交互方法
2018/12/27 Python
用scikit-learn和pandas学习线性回归的方法
2019/06/21 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
J2EE包括哪些技术
2016/11/25 面试题
企业负责人任命书
2014/06/05 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
MySQL 分组查询的优化方法
2021/05/12 MySQL
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android