禁用缓存时,Ionic 1.3会隐藏NavBar

时间:2016-05-09 09:44:45

标签: ionic-framework

我最近开始使用离子并遇到一个问题,我的数据在重新输入视图时没有更新。在发现有关离子的更多信息时,我意识到我们可以禁用该视图的缓存,Ionic每次都被迫重新创建视图。

但是,当我使用$state.go('stateName',{},{reload: true})并禁用离子缓存时,我会遇到另一个问题。

  

我的控制器会为该视图和导航栏调用两次   消失。

同样的问题在离子here开放。关于离子论坛上的问题here也有一些讨论。但是,建议的标记hide-nav-bar="false"解决方案对我不起作用。

使用

的解决方案
$scope.$on('$ionicView.enter', function(e) {
      $ionicNavBarDelegate.showBar(true);
    });

我的导航栏变为可见但没有按钮,并且控制器被调用两次。

由于对于任何不需要视图缓存的应用来说,这应该是一个非常常见的场景,任何人都可以分享任何合适的解决方法来解决这个问题吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

请勿在{{1​​}}方法中使用$state.go来更新视图中的数据,因为这是导致控制器被调用两次的原因。

由于离子缓存控制器,为了在每次重定向到视图时更新数据,您可以使用$ionicView生命周期挂钩,即beforeEnterenterloaded

.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
   })
});

这是一种非常可扩展的方法,用于在控制器中获取数据

有关生命周期方法的更多详细信息,请访问:enter image description here