采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
用 ionic 实现了一个下载功能,
在 onProgress 中,计算了百分比,并将数据更新至 页面引用的对象上,
但是页面只有在 100%的时候渲染了,console.log 打出了完整的记录。
请问这个问题如何解决。
onProgress 更新页面不渲染?方便贴一下代码吗?
/*HTML*/ <ion-header> <ion-navbar> <ion-title>地图设置</ion-title> </ion-navbar> </ion-header> <ion-content> <ion-list> <ion-list-header> 下载地址 </ion-list-header> <ion-item> <ion-label floating>IP</ion-label> <ion-input type="text" [(ngModel)]="ip"></ion-input> </ion-item> <ion-list-header> 层级 </ion-list-header> <ion-item *ngFor="let item of data" (click)="download(item.level)"> <h2>{{item.level}}</h2> <p item-end>{{item.status}}</p> </ion-item> </ion-list> </ion-content>
download(level) { let fileTransfer = this.transfer.create(); const url = encodeURI(`http://${this.ip}/api/v1/tile-server/${level}.zip`); console.log(`will download file ${url}`); let obj = undefined; this.data.forEach(o => { if (level === o.level) { obj = o; } }); fileTransfer.onProgress(progress => { // 这里改变了百分比,虚拟机里更新了,但效果也不理想,手机上一直到最后才更新 obj.status = progress.loaded === progress.total ? '100%' : Math.floor(progress.loaded / progress.total * 100) + '%'; }); fileTransfer.download(url, this.file.dataDirectory + `${level}.zip`).then((entry) => { obj.status = '下载成功'; console.log('download complete: ' + entry.toURL()); this.zip.unzip(entry.toURL(), this.file.dataDirectory + obj.level).then(result => { if (result === 0) { obj.status = '解压完成'; } if (result === -1) { obj.status = '解压失败'; } }); }, (error) => { obj.status = '下载失败'; console.log('download error', error); }); }
你在 console.log 里输出 obj.status 是一直变化的吗?还是绑定到页面就不变化了?
登录后可查看更多问答,登录/注册
新手可学,独立开发跨iOS/Android/微信平台项目
1.4k 20
1.3k 20
1.5k 19
1.7k 16
1.4k 16
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号