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 相关文章推荐
Js callBack 返回前一页的js方法
Nov 30 Javascript
jQuery下通过replace字符串替换实现大小图片切换
May 22 Javascript
JS对HTML标签select的获取、添加、删除操作
Oct 17 Javascript
AngularJS 实现按需异步加载实例代码
Oct 18 Javascript
基于JQuery实现分隔条的功能
Jun 17 Javascript
JQuery获取鼠标进入和离开容器的方向
Dec 29 Javascript
JS中call和apply函数用法实例分析
Jun 20 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
Jan 30 Javascript
echarts统计x轴区间的数值实例代码详解
Jul 07 Javascript
layui表单提交到后台自动封装到实体类的方法
Sep 12 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
Oct 30 Javascript
一篇文章带你浅入webpack的DLL优化打包
Feb 20 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缓存类完整实例
2014/07/26 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
用jscript启动sqlserver
2007/06/21 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
在vue组件中使用axios的方法
2018/03/16 Javascript
nodejs实现超简单生成二维码的方法
2018/03/17 NodeJs
jQuery轮播图实例详解
2018/08/15 jQuery
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
vue 中的 render 函数作用详解
2020/02/28 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
vue 组件基础知识总结
2021/01/26 Vue.js
如何封装Vue Element的table表格组件
2021/02/06 Vue.js
python多线程编程方式分析示例详解
2013/12/06 Python
python多重继承新算法C3介绍
2014/09/28 Python
python开启多个子进程并行运行的方法
2015/04/18 Python
python分析网页上所有超链接的方法
2015/05/08 Python
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
Python自动发邮件脚本
2017/03/31 Python
简单了解python协程的相关知识
2019/08/31 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
大一工商管理职业生涯规划:有梦最美,行动相随
2014/09/18 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
windows安装python超详细图文教程
2021/05/21 Python