我正在使用RadListView并具有使用loadOnDemand加载更多图像的图像列表。有时我会在Android上收到一个令人讨厌的错误消息,提示Cannot read property 'picture' of undefined
,这会冻结整个应用一段时间。
令人沮丧的是,我一直认为我会在一段时间内不修复它时将其修复,但随后它会随机返回。我认为完整的项目重构可能会解决该问题,但事实并非如此。
我创建了一个有问题的示例项目。 https://github.com/keerl/radlistview-bug。
我还为此创建了一个游乐场:https://play.nativescript.org/?id=H7lJuH&template=play-ng&v=3
我还录制了发生问题的视频。 https://www.youtube.com/watch?v=_EGvw8REek8。问题是非常随机的,有时它永远不会触发(这使我认为我已解决了问题),然后在数小时后随机开始再次发生。仅在Android上发生。我曾尝试使用插件进行图像缓存(WebImage),以为图像加载是造成问题的原因,也许占位符会有所帮助,但这并不能解决问题。
答案 0 :(得分:0)
我为您更新了playground。您向列表中通知notifyPullToRefreshFinished
太早了。
您应该仅在数据加载时通知。
loadProducts(PullToRefreshInitiated: boolean) {
return new Promise((resolve, reject) => {
http.getJSON("https://randomuser.me/api/?results=25&inc=picture").then((r) => {
this.users$.push(r.results);
if (PullToRefreshInitiated) {
this.listView.notifyPullToRefreshFinished();
}
// Load a max of 50 items and then force a pull-to-refresh to get more data.
if (this.users$.length > 50) {
resolve(true);
}
else {
resolve(false);
}
}, (e) => {
console.log(e)
});
});
}
P.S。我个人在类似环境中的另外两个建议。