Ionic页面跳转后页面数据没更新怎么办?
我在用Ionic做跨端开发时遇到个奇怪的问题,页面跳转后数据没重新加载。
比如这个列表页跳转到详情页再返回时,新增的数据没显示出来。我试过用NavController的navigateRoot跳转,代码是这样的:
this.navController.navigateRoot('/detail/' + id);
// 返回后手动调用刷新方法也不行
this.loadItems();
控制台没报错但数据就是不更新,是不是和Ionic的路由缓存有关?查文档看到有enableCache参数,但不知道怎么在导航里配置才能解决这个问题…
当时我也是折腾了好久才找到靠谱的解决方案,你可以试试这几个方法:
第一种方式是在页面加上生命周期钩子 ionViewWillEnter,在这个方法里调用数据加载。比如这样:
这个钩子每次页面展示时都会触发,比constructor和ngOnInit更合适处理这种场景。
第二种方式是禁用页面缓存,在路由配置里加上参数:
还有一种更直接的方式,就是在跳转时加上replaceUrl参数:
这几种方法我都试过,最推荐第一种用ionViewWillEnter的方式,改动最小也最符合Ionic的设计理念。当时我也想过各种hack的方法,但最后发现还是官方提供的生命周期钩子最靠谱。记得在loadItems里加个loading提示,避免数据加载时页面空白影响体验。