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 相关文章推荐
清除网页历史记录,屏蔽后退按钮!
Dec 22 Javascript
javascript中使用css需要注意的地方小结
Sep 01 Javascript
js计算德州扑克牌面值的方法
Mar 04 Javascript
AngularJS基础 ng-submit 指令简单示例
Aug 03 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
Aug 15 Javascript
js判断价格,必须为数字且不能为负数的实现方法
Oct 07 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
Nov 16 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
Sep 22 jQuery
JS中Attr的用法详解
Oct 09 Javascript
vue.js 子组件无法获取父组件store值的解决方式
Nov 08 Javascript
JavaScript实现网页动态生成表格
Nov 25 Javascript
vue中activated的用法
Jan 03 Vue.js
小程序开发之模态框组件封装
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数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
jQuery ajax cache缓存问题
2010/07/01 Javascript
表单提交前触发函数返回true表单才会提交
2014/03/11 Javascript
jQuery 获取兄弟元素的几种不错方法
2014/05/23 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
python中partial()基础用法说明
2018/12/30 Python
python中的global关键字的使用方法
2019/08/20 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
pandas和spark dataframe互相转换实例详解
2020/02/18 Python
Keras之自定义损失(loss)函数用法说明
2020/06/10 Python
详解scrapy内置中间件的顺序
2020/09/28 Python
python 利用toapi库自动生成api
2020/10/19 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
送给他或她的礼物:FUN.com
2018/08/17 全球购物
女方回门宴答谢词
2014/01/14 职场文书
班级安全教育实施方案
2014/02/23 职场文书
产品质量承诺书
2014/03/27 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
检讨书怎么写
2015/05/07 职场文书
小学生安全保证书
2015/05/09 职场文书
2015年物资管理工作总结
2015/05/20 职场文书
初中生物教学反思
2016/02/20 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书