我最近开始使用离子并遇到一个问题,我的数据在重新输入视图时没有更新。在发现有关离子的更多信息时,我意识到我们可以禁用该视图的缓存,Ionic每次都被迫重新创建视图。
但是,当我使用$state.go('stateName',{},{reload: true})
并禁用离子缓存时,我会遇到另一个问题。
我的控制器会为该视图和导航栏调用两次 消失。
同样的问题在离子here开放。关于离子论坛上的问题here也有一些讨论。但是,建议的标记hide-nav-bar="false"
解决方案对我不起作用。
使用
的解决方案$scope.$on('$ionicView.enter', function(e) {
$ionicNavBarDelegate.showBar(true);
});
我的导航栏变为可见但没有按钮,并且控制器被调用两次。
由于对于任何不需要视图缓存的应用来说,这应该是一个非常常见的场景,任何人都可以分享任何合适的解决方法来解决这个问题吗?
感谢您的帮助!
答案 0 :(得分:1)
请勿在{{1}}方法中使用$state.go
来更新视图中的数据,因为这是导致控制器被调用两次的原因。
由于离子缓存控制器,为了在每次重定向到视图时更新数据,您可以使用$ionicView
生命周期挂钩,即beforeEnter
,enter
,loaded
等
.controller('AppController', function ($scope) {
$scope.$on('$ionicView.beforeEnter', function () {
// Fetch your data here so that it will be updated every time you redirect to this view
})
});
这是一种非常可扩展的方法,用于在控制器中获取数据