低代码实践(四)
关键点
-
如何判断当前openid是普通买家、商家、供应商?
-
一键搞定下拉刷新列表功能
-
添加页面返回后的列表页面没有刷新,怎么办?
如何判断当前openid是普通买家、商家、供应商?
首先,需要单独的一张模型(表)来存储openid和usertype的关系mapping,因此新建一个模型,如下:
然后,我们的预期是:这个模型中,比如我想把某微信账号的openid变成商家,那就增加这个openid和商家类型,如:
接着,我们定义两个global变量,分别用来保存当前用户是否为商家、当前用户是否为供应商:
然后就是代码部分,需要在app_launch中,判断当前openid是什么角色:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | /** * 可通过 app 获取或修改全局应用的 变量 状态 等信息 * 具体可以console.info 在编辑器Console面板查看更多信息 * 如果需要 async-await,请在方法前 async **/ export default { async onAppLaunch(launchOpts) { app.state.userInfo={}; const result=await app.cloud.callConnector({ name: "getopenid_xxxxxxxxxxx" , methodName: "getopenid" , params:{} }); app.state.userInfo.openid=result.openid; //赋给全局变量 $app.dataset.state.wx_openid=result.openid; //判断当前openid是否为商家 $app.dataset.state.i_am_seller= false let res1 = await app.cloud.dataSources.users_u9v16tm.wedaGetRecords({ "where" : [ { "key" : "openid" , "rel" : "eq" , "val" : $app.dataset.state.wx_openid }, { "key" : "user_type" , "rel" : "eq" , "val" : "1" } ] }); if (res1.total>0) { $app.dataset.state.i_am_seller= true } //判断当前openid是否为供应商 $app.dataset.state.i_am_provider= false let res2 = await app.cloud.dataSources.users_u9v16tm.wedaGetRecords({ "where" : [ { "key" : "openid" , "rel" : "eq" , "val" : $app.dataset.state.wx_openid }, { "key" : "user_type" , "rel" : "eq" , "val" : "2" } ] }); if (res2.total>0) { $app.dataset.state.i_am_provider= true } }, onAppShow(appShowOpts) { //console.log('---------> LifeCycle onAppShow', appShowOpts) }, onAppHide() { //console.log('---------> LifeCycle onAppHide') }, onAppError(options) { //console.log('---------> LifeCycle onAppError', options) }, onAppPageNotFound(options) { //console.log('---------> LifeCycle onAppPageNotFound', options) }, onAppUnhandledRejection(options) { //console.log('---------> LifeCycle onAppUnhandledRejection', options) } } |
最后就是UI的绑定:
一键搞定下拉刷新列表功能
这个是最容易的部分,直接上界面设置:
搞定,很简单
添加页面返回后的列表页面没有刷新,怎么办?
这个两种解决方式:
- 不解决,但是提供下拉刷新功能,妥协来解决,就是上面这个方法
- 在page_show方法里,reload数据源
我们就说下reload方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | /* * 可通过 $page 获取或修改当前页面的 变量 状态 handler lifecyle 等信息 * 可通过 app 获取或修改全局应用的 变量 状态 等信息 * 具体可以 console.info 在编辑器Console面板查看更多信息 * 如果需要 async-await,请在方法前 async */ export default { onPageLoad(query) { }, async onPageShow() { let res = await app.cloud.dataSources.bought_produ_xxxxxxxxx.wedaGetRecords({ //红色部分是模型标识,不是模型名称,是模型标识 "orderBy" : "createdAt" , "orderType" : "desc" , "pageNo" : 1, "pageSize" : 5, "where" : [ { //这里的where要根据各个页面的查询来,这里只是个sample "key" : "zt" , "rel" : "eq" , "val" : "2" } ] }); $page.dataset.state.wedaListMeta=res }, onPageReady() { // console.log('---------> LifeCycle onPageReady') }, onPageHide() { // console.log('---------> LifeCycle onPageHide') }, onPageUnload() { // console.log('---------> LifeCycle onPageUnload') }, } |
OK。
最后,再附上结论xmind图:
自省推动进步,视野决定未来。
心怀远大理想。
为了家庭幸福而努力。
商业合作请看此处:https://www.magicube.ai
心怀远大理想。
为了家庭幸福而努力。
商业合作请看此处:https://www.magicube.ai
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探