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 html()等方法介绍
Nov 18 Javascript
基于jquery的大众点评,分类导航实现代码
Aug 23 Javascript
js性能优化 如何更快速加载你的JavaScript页面
Mar 17 Javascript
javascript工具库代码
Mar 29 Javascript
js实现点击获取验证码倒计时效果
Jan 28 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
Feb 17 Javascript
jquery设置表单元素为不可用的简单代码
Jul 04 Javascript
详解vue-admin和后端(flask)分离结合的例子
Feb 12 Javascript
关于jquery layui弹出层的使用方法
Apr 21 jQuery
Vue中android4.4不兼容问题的解决方法
Sep 04 Javascript
Vue form表单动态添加组件实战案例
Sep 02 Javascript
如何手写一个简易的 Vuex
Oct 10 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 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
php加密解密实用类分享
2014/01/07 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
JavaScript实现点击自动选择TextArea文本的方法
2015/07/02 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
Python中请使用isinstance()判断变量类型
2014/08/25 Python
利用python操作SQLite数据库及文件操作详解
2017/09/22 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
2018/02/21 Python
Jupyter中直接显示Matplotlib的图形方法
2018/05/24 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
python logging添加filter教程
2019/12/24 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
意大利奢侈品牌在线精品店:Jole.it
2020/11/23 全球购物
司机岗位职责说明书
2014/07/29 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
关于企业的执行力标语大全
2020/01/06 职场文书
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android