Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Miykael_xxm
uni-starter
提交
f6d66a54
U
uni-starter
项目概览
Miykael_xxm
/
uni-starter
与 Fork 源项目一致
Fork自
DCloud / uni-starter
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-starter
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
f6d66a54
编写于
4月 30, 2021
作者:
DCloud_JSON
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
完善文档的配置说明,修复账号登录限制11位了。注册的时候好像没限制的问题
上级
e09da5ed
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
86 addition
and
116 deletion
+86
-116
.gitignore
.gitignore
+1
-0
README.md
README.md
+43
-77
baseapp.config.js
baseapp.config.js
+9
-2
components/uni-send-sms-code/uni-send-sms-code.vue
components/uni-send-sms-code/uni-send-sms-code.vue
+0
-0
manifest.json
manifest.json
+2
-2
pages/list/list.nvue
pages/list/list.nvue
+5
-2
pages/ucenter/login-page/pwd-login/pwd-login.vue
pages/ucenter/login-page/pwd-login/pwd-login.vue
+1
-1
pages/ucenter/settings/settings.vue
pages/ucenter/settings/settings.vue
+13
-9
uniCloud-aliyun/cloudfunctions/user-center/index.js
uniCloud-aliyun/cloudfunctions/user-center/index.js
+1
-10
uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json
...loudfunctions/common/uni-config-center/uni-id/config.json
+11
-11
uni_modules/uni-feedback/pages/opendb-feedback/list.vue
uni_modules/uni-feedback/pages/opendb-feedback/list.vue
+0
-1
uni_modules/uni-news-favorite/pages/uni-news-favorite/list.vue
...odules/uni-news-favorite/pages/uni-news-favorite/list.vue
+0
-1
未找到文件。
.gitignore
浏览文件 @
f6d66a54
...
...
@@ -2,6 +2,7 @@ unpackage/
.hbuilderx
node_modules
.DS_Store
uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json
pages/grid/banner.json
pages/list/list.json
manifest.json
\ No newline at end of file
README.md
浏览文件 @
f6d66a54
> baseapp目前还处于内测阶段,内测QQ群号:869926521,欢迎大家加入!内测期间享受有疑问实时解答的福利。
> 内测群反馈的已知问题,正在修复中
-
[ ] 账号登录限制11位了。注册的时候好像没限制
-
[ ] 缺了小程序授权登陆
-
[ ] 服务端,应当加个空的config配置方便二开使用
-
[ ] 密码注册把pwd2也存在本地了,暴露了密码
> base app目前还处于内测阶段,内测QQ群号:869926521,欢迎大家加入!内测期间享受有疑问实时解答的福利。
### 介绍
base app
,是一个云端一体的、集成了商用项目开发常见功能的项目模板。
`base app`
,是一个云端一体的、集成了商用项目开发常见功能的项目模板。
如果说uniCloud admin是管理端项目的基础模板,那么base app则是用户端、尤其是移动端的基础模板。
在HBuilderX新建项目时选择base app项目模板,在这个模板基础之上快速填充自己的业务,即可很快完成一个应用。
地址:
[
https://gitee.com/dcloud/base-app
](
https://gitee.com/dcloud/base-app
)
#### 项目背景
我们一直想出一个结合uni-app、uniCloud和openDB以及uni-id和uniCloud admin等,uni全家桶的项目模板;
为了照顾各类应用的开发者,我们取交最终集罗列了如下功能,发现这些就是除业务逻辑外的项目基本功能并把它命名为
baseapp
。
为了照顾各类应用的开发者,我们取交最终集罗列了如下功能,发现这些就是除业务逻辑外的项目基本功能并把它命名为
`base app`
。
### base app集成的功能包括:
1.
个人中心:登录注册(含用户名密码登录、手机号验证码登录、app一键登陆、微信登录、Apple登录、支付宝小程序登录)、修改密码、忘记密码、头像更换、昵称修改、积分查看、指纹绑定、退出
...
...
@@ -33,31 +28,39 @@ base app将节省开发者大量的时间,让开发者集中精力在自己的
有了base app,再加上schema2code生成前端页面,一个简单应用就可以快速完成。
base app + uniCloud admin,应用开发从未如此简单快捷!
#### 时序介绍
初始化应用执行appInit
读取baseapp.config并挂载到globalData的config下
读取应用版本号,检查是否有可更新的版本。并存到globalData下
使用
[
拦截器
](
https://uniapp.dcloud.io/api/interceptor?id=addinterceptor
)
实现了,1、路由拦截。2、摄像头/相册权限,引导跳到设置界面
监听网络的变化与toast方式提醒
预登陆一键登录功能
全局监听clientDB的err事件,判断是否为token过期失效等需要重新登陆的问题。自动跳转到登陆页面
判断入口页是否为强制登陆页面,Y.检测本地的token是否有效(存在且并未过期)否则跳转到登陆页面
### 应用配置
cloudfunctions
└─────common 公共模块
│ └─uni-config-center // baseapp的服务端配置中心,项目所有云函数的配置在这里填写
│ ├─index.js // config-center入口文件
│ └─uni-id // 插件uni-id对应的目录
│ ├─config.json // uni-id对应的配置文件
│ └─file.cert // uni-id依赖的其他文件,假如你使用微信发红包功能,需要的证书文件就是放到这里
├─ baseconfig // baseapp的前端的配置文件,项目所有模块的配置在这里填写。详见该文件的代码注释。
└─ manifest.json // 配置应用名称、appid、logo、版本等打包信息,
[
详情
](
https://uniapp.dcloud.io/collocation/manifest
)
完整的uni-app目录结构
[
详情
](
https://uniapp.dcloud.io/frame?id=%e7%9b%ae%e5%bd%95%e7%bb%93%e6%9e%84
)
#### 1. manifest.json配置
#### 应用配置
| |_cloudfunctions
| |_common
| |_uni-config-center
| |_uni-id
| |_config.json
|- baseconfig
|- manifest.json
### 界面如下:
完成如下配置:
-
App模块配置 --> OAuth(登录鉴权)--> 勾选微信登录 --> 填写
`appid`
、
`appsecret`
、
`ios平台通用链接`
-
App模块配置 --> OAuth(登录鉴权)勾选
`苹果登录`
,
[
IOS苹果授权登录参考文档
](
https://ask.dcloud.net.cn/article/36651
)
。如不发布到Appstore,不需要配置此项
-
App模块配置 --> Share(分享)--> 微信分享 --> 填写
`appid`
、
`ios平台通用链接`
-
App常用其他设置 --> 填写关联域Associated Domains
[
参考教程
](
https://ask.dcloud.net.cn/article/36393
)
。如不发布到Appstore,不需要配置此项
#### 2. uni-id配置
在项目目录
`uniCloud`
-->
`cloudfunctions`
-->
`common`
-->
`uni-config-center`
-->
`uni-id`
-->
`config.json`
文件里:
-
微信登录填写
`appid`
、
`appsecret`
,在微信开放平台查看,
[
微信开放平台
](
https://open.weixin.qq.com/
)
-
苹果登录需要配置,
`app-plus`
-->
`oauth`
-->
`apple`
,填写包名
`bundleId`
### 界面如下:
## 项目构成
#### baseapp中的主要模块介绍
1.
uni-id用户体系
[
uni-id
](
https://uniapp.dcloud.io/uniCloud/uni-id
)
2.
uniCloud 配置中心
[
uni-config-center
](
https://ext.dcloud.net.cn/plugin?id=4425
)
2.
分享功能插件
[
uni-share
](
https://ext.dcloud.net.cn/plugin?id=4860
)
3.
升级中心
[
uni-upgrade-center
](
https://ext.dcloud.net.cn/plugin?id=4542
)
4.
云端一体搜索模板
[
uni-search-template
](
https://ext.dcloud.net.cn/plugin?id=3851
)
...
...
@@ -66,11 +69,22 @@ base app + uniCloud admin,应用开发从未如此简单快捷!
1.
[
limeClipper
](
https://ext.dcloud.net.cn/plugin?id=3594
)
@作者: 陌上华年
2.
[
Sansnn-uQRCode
](
https://ext.dcloud.net.cn/plugin?id=1287
)
@作者: 3snn
#### 时序介绍
初始化应用执行appInit
读取baseapp.config并挂载到globalData的config下
读取应用版本号,检查是否有可更新的版本。并存到globalData下
使用
[
拦截器
](
https://uniapp.dcloud.io/api/interceptor?id=addinterceptor
)
实现了,1、路由拦截。2、摄像头/相册权限,引导跳到设置界面
监听网络的变化与toast方式提醒
预登陆一键登录功能
全局监听clientDB的err事件,判断是否为token过期失效等需要重新登陆的问题。自动跳转到登陆页面
判断入口页是否为强制登陆页面,Y.检测本地的token是否有效(存在且并未过期)否则跳转到登陆页面
## 真机体验快速部署流程
#### 1. 开通uniCloud
-
开通
uniCloud
:本项目是云端一体的,它的云端代码需要部署在uniCloud云服务空间里,需要开通uniCloud。在
[
https://unicloud.dcloud.net.cn/
](
https://unicloud.dcloud.net.cn/
)
登录,按云厂商要求进行实名认证。
-
开通
`uniCloud`
:本项目是云端一体的,它的云端代码需要部署在uniCloud云服务空间里,需要开通uniCloud。在
[
https://unicloud.dcloud.net.cn/
](
https://unicloud.dcloud.net.cn/
)
登录,按云厂商要求进行实名认证。
-
在uniCloud认证通过后,创建一个服务空间给本项目使用。选择阿里云或腾讯云均可。
[
参考
](
https://uniapp.dcloud.net.cn/uniCloud/price
)
-
使用HBuilderX 3.1以上版本(最好是最新版),把本项目导入到HBuilderX中,在项目根目录uniCloud上点右键菜单,关联服务空间 -> 选择之前创建的服务空间
...
...
@@ -136,56 +150,8 @@ base app + uniCloud admin,应用开发从未如此简单快捷!
以上业务都有审核周期,请提前处理。
### 配置参数
#### 1. manifest.json配置
完成如下配置:
-
App模块配置 --> OAuth(登录鉴权)--> 勾选微信登录 --> 填写
`appid`
、
`appsecret`
、
`ios平台通用链接`
(如不发布到Appstore,不需要填通用链接)
-
App模块配置 --> OAuth(登录鉴权)勾选
`苹果登录`
,
[
IOS苹果授权登录参考文档
](
https://ask.dcloud.net.cn/article/36651
)
。如不发布到Appstore,不需要配置此项
-
App模块配置 --> Share(分享)--> 微信分享 --> 填写
`appid`
、
`ios平台通用链接`
(如不发布到Appstore,不需要填通用链接。)
-
App常用其他设置 --> 填写关联域Associated Domains
[
参考教程
](
https://ask.dcloud.net.cn/article/36393
)
。如不发布到Appstore,不需要配置此项
#### 2. uni-id配置
在项目目录
`uniCloud`
-->
`cloudfunctions`
-->
`common`
-->
`uni-config-center`
-->
`uni-id`
-->
`config.json`
文件里:
-
微信登录填写
`appid`
、
`appsecret`
,在微信开放平台查看,
[
微信开放平台
](
https://open.weixin.qq.com/
)
-
苹果登录需要配置,
`app-plus`
-->
`oauth`
-->
`apple`
,填写包名
`bundleId`
#### 3. 申请接入微信商户支付
在项目目录
`uniCloud`
-->
`cloudfunctions`
目录
-
`minectrl`
-->
`controller`
-->
`mine.js`
配置如下:
-
`uni-admin`
-->
`controller`
-->
`admin.js`
配置如下:
```
js
appid
:
'
wxxxxxxxxxxxxxxx
'
,
//公众号id
mchid
:
'
00000000000
'
,
//商户id
partnerKey
:
'
xxxxxxxxxxxxxxxxxxxxx
'
,
//安全密钥
```
教程参考,
[
微信App支付功能申请
](
https://uniapp.dcloud.net.cn/api/plugins/payment?id=app%e5%b9%b3%e5%8f%b0%e6%94%af%e4%bb%98%e6%b5%81%e7%a8%8b
)
对
`uniCloud`
-->
`cloudfunctions`
目录点右键,上传所有云函数及公共模块。
#### 5. 配置分享下载链接
裂变拉新是必要的传播手段,本项目集成了DCloud的
[
应用发行平台
](
https://www.dcloud.io/dportal.html
)
服务,直接提供了分享下载的功能。
1.
申请开通m3w服务:加入qq群645630288,向管理员提供appid,管理员审核
2.
在HBuilderX中选择好本项目,点菜单发行 -> 生成统一发布页面,在新界面上传图文介绍,就会得到一个短网址
3.
在项目根目录
`common`
-->
`globalunit.js`
里面修改
`downloadurl`
下载地址为上一步得到的短网址
#### 7. APP云打包
IOS和Android云打包,配置正确的包名,勾选广告,打包。
IOS和Android云打包,配置正确的包名,打包。
注意:打包安卓或者苹果时,需要在开发者中心后台一键登录中配置相应平台的Android 包名或IOS BundleId 。
...
...
baseapp.config.js
浏览文件 @
f6d66a54
...
...
@@ -35,20 +35,27 @@ module.exports = {
如果你需要在不同平台有不同的配置,直接用条件编译即可
*/
},
//关于应用
"
about
"
:
{
//应用名称
"
appName
"
:
"
base-app
"
,
//应用logo
"
logo
"
:
"
/static/logo.png
"
,
//公司名称
"
company
"
:
"
数字天堂(北京)网络技术有限公司
"
,
//口号
"
slogan
"
:
"
为开发而生
"
,
//政策协议
"
agreements
"
:
[{
"
title
"
:
"
用户服务协议
"
,
"
url
"
:
"
https://ask.dcloud.net.cn/protocol.html
"
"
title
"
:
"
用户服务协议
"
,
//协议名称
"
url
"
:
"
https://ask.dcloud.net.cn/protocol.html
"
//对应的网络链接
},
{
"
title
"
:
"
隐私政策
"
,
"
url
"
:
"
https://ask.dcloud.net.cn/protocol.html
"
}
],
//应用的链接,用于分享到第三方平台和生成关于我们页的二维码
"
download
"
:
"
https://m3w.cn/uniapp
"
},
//用于打开应用市场评分界面
...
...
components/uni-send-sms-code/send-sms-code.vue
→
components/uni-send-sms-code/
uni-
send-sms-code.vue
浏览文件 @
f6d66a54
文件已移动
manifest.json
浏览文件 @
f6d66a54
...
...
@@ -91,10 +91,10 @@
"quickapp"
:
{},
/*
小程序特有相关
*/
"mp-weixin"
:
{
"appid"
:
""
,
"appid"
:
"
wx81dbb061d2258234
"
,
"setting"
:
{
"urlCheck"
:
false
,
"es6"
:
tru
e
"es6"
:
fals
e
},
"usingComponents"
:
true
,
"betterScopedSlots"
:
true
...
...
pages/list/list.nvue
浏览文件 @
f6d66a54
...
...
@@ -19,7 +19,7 @@
<template v-else>
<uni-list-item class="get-data-state" v-if="data.length===0&&pagination.current===1">
<view slot="body">
<view
class="f1"
slot="body">
<!-- 数据为空 当前页码为1,且正在加载中;这里为了演示,更加直观的表达内部逻辑。商用项目建议将这部分封装为组件,更好的让业务逻辑与功能分离-->
<uni-load-more v-if="loading" status="loading"></uni-load-more>
<template v-else>
...
...
@@ -210,5 +210,8 @@
width: 750rpx;
text-align: center;
}
.uni-list {}
.uni-list {}
.f1{
flex: 1;
}
</style>
pages/ucenter/login-page/pwd-login/pwd-login.vue
浏览文件 @
f6d66a54
...
...
@@ -3,7 +3,7 @@
<!-- 顶部文字 -->
<text
class=
"title"
>
用户名密码登录
</text>
<uni-agreements></uni-agreements>
<input
type=
"number"
class=
"input-box"
:inputBorder=
"false"
v-model=
"username"
maxlength=
"11"
placeholder=
"请输入手机号/用户名"
></input>
<input
type=
"number"
class=
"input-box"
:inputBorder=
"false"
v-model=
"username"
placeholder=
"请输入手机号/用户名"
></input>
<input
type=
"password"
class=
"input-box"
:inputBorder=
"false"
v-model=
"password"
placeholder=
"请输入密码"
></input>
<button
class=
"send-btn"
:disabled=
"!canLogin"
:type=
"canLogin?'primary':'default'"
@
click=
"pwdLogin"
>
登录
</button>
<!-- 忘记密码 -->
...
...
pages/ucenter/settings/settings.vue
浏览文件 @
f6d66a54
<
template
>
<view
class=
"content"
>
<!-- 功能列表 -->
<uni-list
class=
"mt10"
>
<uni-list
class=
"mt10"
>
<uni-list-item
title=
"个人资料"
to=
"/pages/ucenter/userinfo/userinfo"
link=
"navigateTo"
></uni-list-item>
<uni-list-item
v-if=
"userInfo.phone"
title=
"修改密码"
:to=
"'/pages/ucenter/login-page/pwd-retrieve/pwd-retrieve?phoneNumber='+ userInfo.phone"
link=
"navigateTo"
></uni-list-item>
</uni-list>
<uni-list-item
v-if=
"userInfo.mobile"
title=
"修改密码"
:to=
"'/pages/ucenter/login-page/pwd-retrieve/pwd-retrieve?phoneNumber='+ userInfo.mobile"
link=
"navigateTo"
></uni-list-item>
</uni-list>
<!-- #ifndef H5 -->
<uni-list
class=
"mt10"
>
<!-- #ifdef APP-PLUS -->
<!-- 检查push过程未结束不显示,push设置项 -->
...
...
@@ -13,7 +14,8 @@
<!-- #endif -->
<uni-list-item
v-if=
"supportMode.includes('fingerPrint')"
title=
"指纹解锁"
@
click=
"startSoterAuthentication('fingerPrint')"
link
></uni-list-item>
<uni-list-item
v-if=
"supportMode.includes('facial')"
title=
"人脸解锁"
@
click=
"startSoterAuthentication('facial')"
link
></uni-list-item>
</uni-list>
</uni-list>
<!-- #endif -->
<!-- 退出/登陆 按钮 -->
<view
class=
"bottom-back"
@
click=
"clickLogout"
>
...
...
@@ -53,7 +55,7 @@
this
.
supportMode
=
res
.
supportMode
},
fail
:
(
err
)
=>
{
reject
(
err
);
console
.
log
(
err
);
}
})
// #endif
...
...
@@ -78,7 +80,7 @@
changePwd
()
{
uni
.
navigateTo
({
url
:
'
/pages/ucenter/login-page/pwd-retrieve/pwd-retrieve?phoneNumber=
'
+
(
this
.
userInfo
&&
this
.
userInfo
.
phone
?
this
.
userInfo
.
phon
e
:
''
),
+
(
this
.
userInfo
&&
this
.
userInfo
.
mobile
?
this
.
userInfo
.
mobil
e
:
''
),
fail
:
err
=>
{
console
.
log
(
err
);
}
...
...
@@ -116,7 +118,8 @@
icon
:
'
none
'
});
},
fail
:
(
err
)
=>
{
fail
:
(
err
)
=>
{
console
.
log
(
err
);
console
.
log
(
`认证失败:
${
err
.
errCode
}
`
);
uni
.
showToast
({
title
:
`认证失败`
,
...
...
@@ -129,7 +132,7 @@
checkIsSoterEnrolledInDevice
({
checkAuthMode
,
title
})
{
return
new
Promise
((
resolve
,
reject
)
=>
{
uni
.
checkIsSoterEnrolledInDevice
({
checkAuthMode
:
checkAuthMode
,
checkAuthMode
,
success
:
(
res
)
=>
{
if
(
res
.
isEnrolled
)
{
return
resolve
(
res
);
...
...
@@ -140,7 +143,8 @@
});
reject
(
res
);
},
fail
:
(
err
)
=>
{
fail
:
(
err
)
=>
{
console
.
log
(
err
);
uni
.
showToast
({
title
:
`
${
title
}
失败`
,
icon
:
'
none
'
...
...
uniCloud-aliyun/cloudfunctions/user-center/index.js
浏览文件 @
f6d66a54
...
...
@@ -124,14 +124,6 @@ exports.main = async (event, context) => {
mobile
:
params
.
mobile
,
code
:
params
.
code
});
// let verifyCode = await uniID.verifyCode({
// mobile: params.mobile,
// code: params.code
// })
// if (verifyCode.code === 0) {
// } else {
// res = verifyCode
// }
res
=
await
uniID
.
bindMobile
({
uid
:
params
.
uid
,
mobile
:
params
.
mobile
,
...
...
@@ -159,8 +151,7 @@ exports.main = async (event, context) => {
username
,
password
,
gender
,
nickname
,
password
nickname
});
if
(
res
.
code
===
0
)
{
await
registerSuccess
(
res
.
uid
)
...
...
uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json
浏览文件 @
f6d66a54
...
...
@@ -12,19 +12,19 @@
"tokenExpiresIn"
:
2592000
,
"oauth"
:
{
"weixin"
:
{
"appid"
:
""
,
"appsecret"
:
""
"appid"
:
"
wxffdd8fa6ec4ef2a0
"
,
"appsecret"
:
"
6c9119430d7be0a147bcbbb73ef33acf
"
},
"apple"
:
{
"bundleId"
:
""
"bundleId"
:
"
io.dcloud.hellouniapp
"
}
}
},
"mp-weixin"
:
{
"oauth"
:
{
"weixin"
:
{
"appid"
:
""
,
"appsecret"
:
""
"appid"
:
"
wx999bf02c8e05dfc9
"
,
"appsecret"
:
"
b5f608afd332b2c0ded7e6b98ca4ccd3
"
}
}
},
...
...
@@ -38,15 +38,15 @@
},
"service"
:
{
"sms"
:
{
"name"
:
""
,
"name"
:
"
DCloud
"
,
"codeExpiresIn"
:
300
,
"smsKey"
:
""
,
"smsSecret"
:
""
"smsKey"
:
"
71a19f38c954f7d768d68a050486bf15
"
,
"smsSecret"
:
"
d6c424b702d73baa3b6e1a1452469213
"
},
"univerify"
:
{
"appid"
:
""
,
"apiKey"
:
""
,
"apiSecret"
:
""
"appid"
:
"
__UNI__03B096E
"
,
"apiKey"
:
"
3fc28519d90d74173bcecf2daf4ffcc4
"
,
"apiSecret"
:
"
dd793e5bc4b372ce932f35bbb4c5d61b
"
}
}
}
\ No newline at end of file
uni_modules/uni-feedback/pages/opendb-feedback/list.vue
浏览文件 @
f6d66a54
...
...
@@ -9,7 +9,6 @@
</uni-collapse-item>
</uni-collapse>
</view>
<uni-nodata
v-else
:isLoading=
"isLoading"
@
retry=
"refreshData"
></uni-nodata>
</unicloud-db>
<uni-fab
ref=
"fab"
horizontal=
"right"
vertical=
"bottom"
:pop-menu=
"false"
@
fabClick=
"fabClick"
/>
</view>
...
...
uni_modules/uni-news-favorite/pages/uni-news-favorite/list.vue
浏览文件 @
f6d66a54
...
...
@@ -14,7 +14,6 @@
</uni-list-item>
</uni-list>
</view>
<uni-nodata
v-else
:isLoading=
"isLoading"
@
retry=
"refreshData"
></uni-nodata>
<uni-load-more
v-if=
"data.length>10"
:status=
"loading?'loading':(hasMore ? 'more' : 'noMore')"
></uni-load-more>
</unicloud-db>
</view>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录