8

我已经切换到ui-router。一切都很顺利,除了一件事。在我的页面上,我有一个更改应用程序上下文的选择。无论如何,以前,当这个上下文发生变化时,我正在执行这段代码(特别是set方法):

'use strict';
angular.module('main').factory('lacContext', ['$route', function ($route) {
    return {
        set: function (id) {
            sessionStorage.setItem("lac-context", id);
            $route.reload();
        },
        get: function () {
            return sessionStorage.getItem("lac-context");
        }
    };
}])

$route.reload()

正在做最重要的事情。它重新加载了页面。但是在切换到 ui-router 之后,$route.reload 什么也没做。我也没有在 ui-router API 中找到对应的。如何解决这个问题?

4

5 回答 5

37

怎么样:

$state.go($state.$current, null, { reload: true });
于 2014-01-22T17:08:00.207 回答
8

你可以做$state.reload()

它有一个错误,有时无法重新实例化控制器。你可以解决这个问题

$state.transitionTo($state.current, $stateParams, { reload: true, inherit: true, notify: true });
于 2014-07-16T16:54:18.217 回答
6

好的,当我将 $state 注入控制器时它可以工作。

但是当将它注入到像代码片段这样的服务中时,当然 $state 是未定义的。

虽然

$state.go('.')

没用,我做了这样的事情:

    $stateProvider
      .state('home', {
          controller: function ($state) {
              $state.go('advisoryLeadOffering.packages');
          }
      })
      .state('advisoryLeadOffering.packages', {
          url: "/packages",
          templateUrl: "/AdvisoryLeadOffering/Packages",
          controller: 'AdvisoryLeadOfferingPackages'
      })

当我需要重新加载时,我会执行以下操作:

$state.transitionTo('home');

范围内的方法。

于 2013-10-25T09:52:35.640 回答
0

我有一个类似的问题,我想要一个控制器外部的链接来刷新状态并reload()在控制器中创建一个函数。

SomeCtrl

$scope.reload = function(){
    $state.transitionTo('myState');
}

将此添加到您的锚点:

ng-click="reload()"

H/T @dragonfly 指点我transitionTo()

于 2014-01-27T23:53:00.853 回答
0

唯一对我有用的东西:

创建重定向状态:

$stateProvider.state('redirect', {
    url: 'redirect/:to',
    controller: function($state, $stateParams, $scope) {
        $state.go($stateParams.to, null, {reload: true});
    }
});

进入这个状态:

$state.go('redirect', {to: $state.current.name}, {reload: true});
于 2015-08-27T05:15:22.507 回答