Angularjs - 在角度ui路由器中清除粘性状态

时间:2015-11-09 09:34:47

标签: javascript angularjs angular-ui-router

我正在尝试在angularjs应用程序中添加多个选项卡。 单击任何菜单项,我在新选项卡中打开视图。

用户可以选择关闭任何现有标签,然后他可以再次点击菜单选项,再次将视图作为标签显示。

直到现在所有这一切都正常,但问题是当标签关闭时我无法清除之前的粘滞状态。当用户点击同一菜单时,新视图将以之前的状态加载。

在关闭标签操作上,我试图将状态清除为以下状态。

 $stickyState.stateInactivated($state.$current)
 $stickyState.reset('tabs.survey')

我对该标签的路由如下。

 $stateProvider.state('tabs.survey', {
        url: '/survey',
        sticky: true,
        views: {
            'survey': {
                templateUrl: 'partials/survey.html',
                controller : 'surveyController'
            }
        }
    });

1 个答案:

答案 0 :(得分:0)

我应用了解决方法/黑客来解决此问题

我在路线中添加了一个新参数,如下所示。

 $stateProvider.state('tabs.survey', {
        url: '/survey/:ts',
        sticky: true,
        views: {
            'survey': {
                templateUrl: 'partials/survey.html',
                controller: 'surveyController'
            }
        }
    });

添加了模块运行配置,如下所示。

app.run(function ($state, $rootScope, $stateParams) {
    $rootScope.$state = $state;
    $rootScope.$stateParams = $stateParams;
})

最后在创建新标签项时,我尝试更改参数以刷新旧状态,如下所示。

 $state.go('tabs.survey', { "ts": 1 });
  $state.go('tabs.survey', { "ts": 0 });

这只是一种解决方法。对此可以有一些更好的解决方案,我现在还不确定。

欢迎所有建议。