1

我正在使用 routeSegment 模块使用 AngularJS 编写应用程序。在我的应用程序中,我有以下构造:

.segment('index', {
        templateUrl: 'assets/templates/index.html',
        controller: MainCtrl,
        dependencies: ['index'],
        resolve: ['isUserLoggedIn'],
        resolveFailed: {
            templateUrl:    'assets/templates/login.html',
            controller:     LoginCtrl
        }
})

如果用户未登录,他们将被重定向到登录页面。问题是,一旦他们登录,我打电话$location.path('/index');resolveFailed仍然有效。有没有办法在登录时强制刷新路由?

4

2 回答 2

2

您是否尝试使用重新加载功能?

        $routeSegment.chain[0].reload();
于 2013-11-12T18:13:40.893 回答
1

我遇到过同样的问题。

resolveFailed是在解析失败的情况下使用的备用段定义。

我设法使它以这种方式工作:

var login = {
    controller: 'LoginCtrl',
    templateUrl: 'login.html',
    resolve: { 
        'isUserNotLoggedIn': function($q) {
            var defer = $q.defer();
            if (localStorage.hasOwnProperty("loggedIn")) {
                defer.reject();
            } else {
                defer.resolve();
            }
            return defer.promise;
        }
    }
};

var main = {
    controller: 'MainCtrl',
    templateUrl: 'main.html',
    resolve: {
        'isUserLoggedIn': function($q) {
            var defer = $q.defer();
            if (localStorage.hasOwnProperty("loggedIn")) {
                defer.resolve();
            } else {
                defer.reject();
            }
            return defer.promise;
        }
    },

    /* if user is not loggedin then go to login page */
    resolveFailed: login
};

/* if user is loggedin then go to login page */
login.resolveFailed = main;

.segment('index', main)

我在https://github.com/artch/angular-route-segment/issues/23上看到您围绕刷新整个页面进行了工作。

我还注意到,即使父段解析失败,子段仍会尝试加载。

于 2014-01-01T16:43:56.863 回答