低代码实践(四)
关键点
-
如何判断当前openid是普通买家、商家、供应商?
-
一键搞定下拉刷新列表功能
-
添加页面返回后的列表页面没有刷新,怎么办?
如何判断当前openid是普通买家、商家、供应商?
首先,需要单独的一张模型(表)来存储openid和usertype的关系mapping,因此新建一个模型,如下:
然后,我们的预期是:这个模型中,比如我想把某微信账号的openid变成商家,那就增加这个openid和商家类型,如:
接着,我们定义两个global变量,分别用来保存当前用户是否为商家、当前用户是否为供应商:
然后就是代码部分,需要在app_launch中,判断当前openid是什么角色:
/** * 可通过 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方式:
/* * 可通过 $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