thinkjs之页面跳转同步异步操作

前端之家收集整理的这篇文章主要介绍了thinkjs之页面跳转同步异步操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

对于刚入手thinkjs项目的新手来说,时常会犯的一个错误就是“混用”各种代码逻辑,比如:我们经常在做后台管理系统的时候用到的登录框,

其实它原本是有一个路由专门存放自己的代码逻辑,而在点击提交按钮的时候,要达到的效果便是账号密码正确的时候,正常@R_31_404@面,而错误的时候给出提示;为了发现问题,就先把源代码贴出来吧:

<a href="/tag/yonghu/" target="_blank" class="keywords">用户</a><a href="/tag/denglu/" target="_blank" class="keywords">登录</a>
用户登录
Box">
用户登录
  • required="true" value="">
  • required="true" value="">
  • 登录" class="lgbtn"/>
  • 页面效果

    而正常的后台处理逻辑也便是:

    0) { if(result[0].state==1){ let adminrole= await this.model('adminroles').where({id:result[0].rids}).select(); if(adminrole&&adminrole[0].state!=1){ this.assign('msg','该用户的身份已经被禁用或删除,请联系管理员!'); return this.display("index");//错误信息渲染至登录页面 }else{ let acresult = await this.model('adminaction').where({rid: result[0].rids}).field('action').select();//查询该权限id的集合 result[0]['actions'] = acresult;//把集合赋予session await this.session(cf.sessionKey,result[0]); await this.model('adminlog').add({uid: result[0].id,createtime: new Date().getTime() / 1000,ip: this.ip()})//添加登录日志 return this.redirect('/main');//跳转main路由(主要是修改页面显示url) } }else{ this.assign('msg','该用户已经被停用或删除,请联系管理员!'); return this.display("index");//错误信息渲染至登录页面 } } else { this.assign('msg','用户名或密码错误!'); return this.display("index");//错误信息渲染至登录页面 } } /** * 退出方法 * @returns {promise|*|void|PreventPromise} */ async loginoutAction() { await this.session();//清除session return this.redirect('/');//跳转登录页面 } }

    原本这样处理下来的代码算是最简洁的方式。但是对于新手来说,因为在easyui官网上看到的demo比较多,于是在不太清楚各个之间的区别时,就容易出现“互相冗杂”在一起的现象,于是就出现了这样的情况:

    <Meta charset="UTF-8"> <a href="/tag/yonghu/" target="_blank" class="keywords">用户</a><a href="/tag/denglu/" target="_blank" class="keywords">登录</a>

    后台的处理逻辑:

    错误!'); return this.display('index'); // return this.json({'succ':false,'msg':'账号或者密码错误!'}); } } }

    而这样处理的结果却是:

    出现了浏览器自身报错:此方法已被弃用。新手因为接触thinkjs的并不是很多,所以时常会混淆其中,以为这样很正确,其实在浏览器自身的js运行机制中,该方法是行不通的。因此建议初接触thinkjs的小伙伴们,在写页面跳转的逻辑,比如用到redirect或assign渲染时,前台就不要使用ajax提交;而后台用json返回时,就不要使用sumbit()提交。而这种非常隐蔽的问题,一般初学者也不会意识到问题存在哪里,因此还是需要小伙伴们多多看看相关的教程,增长自己的经验。

    猜你在找的JavaScript相关文章