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显示选择目录对话框的代码
Nov 10 Javascript
WEB高性能开发之疯狂的HTML压缩
Jun 19 Javascript
js 判断checkbox是否选中的操作方法
Nov 09 Javascript
原生js实现半透明遮罩层效果具体代码
Jun 06 Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
Jul 29 Javascript
分享10个优化代码的CSS和JavaScript工具
May 11 Javascript
纯JavaScript手写图片轮播代码
Oct 20 Javascript
微信小程序之ES6与事项助手的功能实现
Nov 30 Javascript
jQuery 如何实现一个滑动按钮开关
Dec 01 Javascript
vue.js实现的经典计算器/科学计算器功能示例
Jul 11 Javascript
详解Angular6 热加载配置方案
Aug 18 Javascript
一文了解Vue中的nextTick
May 06 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 socket的讲解与实例分析
2013/06/13 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
jQuery中的ajax async同步和异步详解
2015/09/29 Javascript
Jquery Mobile 自定义按钮图标
2015/11/18 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
JS严格模式知识点总结
2018/02/27 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
jQuery实现鼠标移入显示蒙版效果
2020/01/11 jQuery
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
Python检测端口IP字符串是否合法
2020/06/05 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
python中pow函数用法及功能说明
2020/12/04 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
挑战杯创业计划书的写作指南
2014/01/07 职场文书
2014年实习期工作总结
2014/11/27 职场文书
党员示范岗材料
2014/12/19 职场文书
中学教师师德师风承诺书
2015/04/28 职场文书
十八大观后感
2015/06/12 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
如何利用python创作字符画
2022/06/25 Python