如何在离子框架中使用ui-router破坏控制器

时间:2016-03-31 11:48:14

标签: angularjs ionic-framework angular-ui-router

我有一个离子角应用程序,我使用ui-router。我的问题是,当我从状态导航到新状态时,控制器不会被破坏。因此,当用户注销并且另一个登录时,他们可以看到第一个用户数据,因为控制器仍然包含第一个用户的数据。如何在状态变化时销毁控制器?

以下是配置示例:

$stateProvider.state('root.module.view', {
  url: '/path',
  views: {
    'content@root': {
      template: require('./template.jade'),
      controller: 'MyController',
      controllerAs: 'myCtrl'
    }
  }
});

2 个答案:

答案 0 :(得分:1)

好的我已经找到了答案,问题的根源是Ionic缓存视图以加快页面更改,但通过这样做可以防止页面上的控制器被破坏。

有更多方法可以改变这种行为。首先,您可以在路由配置中设置cache属性,如下所示:

$stateProvider.state('root.module.view', {
  url: '/path',
  views: {
    'content@root': {
      cache: false,
      template: require('./template.jade'),
      controller: 'MyController',
      controllerAs: 'myCtrl'
    }
  }
});

或者你可以用$ionicConfigProvider这种方式完全禁用它:

  $ionicConfigProvider.views.maxCache(0);

第三个选项是使用属性:

<ion-view cache-view="false" view-title="My Title!">
...
</ion-view>

答案 1 :(得分:0)

在你的控制器中尝试这个,

countAlbum.setText(currentItemMusicGroup.getCountAlbum() + this.division + R.string.list_item_textView_countSing);

当事件触发时,你可以做你的逻辑。

如果你真的想在范围被破坏时触发一些东西,

function NewsHomeController($rootScope) {
    $rootScope.$on('$stateChangeSuccess',
            function(event, toState, toParams, fromState, fromParams){ 
                //do stuff here.
            });
}

你可以尝试这个,但我认为这更适合指令控制器。