AngularJS-如何在没有视图的情况下调用路由

3
我正在尝试调用/auth/logout URL,在会话被删除后进行重定向:
app.config(['$routeProvider',function($routeProvider) {
    $routeProvider
    .when('/auth/logout',{
        controller:'AuthLogout'
        //templateUrl: not needed

    })
})
.controller('AuthLogout', ['$window','$location', function ($window,$location) {
    $window.localStorage.removeItem('user_username');
    $window.localStorage.removeItem('user_id');
    $window.localStorage.removeItem('user_session_token');
    $location.path('/');
}]);

实际上,我不需要为AuthLogout控制器设置视图,但如果我在routeProvider中没有指定templateUrl,我无法使其工作,而如果我指定了templateUrl,它就可以工作。

如何在不加载视图的情况下调用url/controller?


尝试使用模板:“有点棘手,但应该可以解决^^” - Whisher
我得到了一个无限循环,并且浏览器崩溃了:O - itsme
在 when 块中,你可以使用 or 模板或 templateUrl,所以无限循环与其无关,这很奇怪。 - Whisher
3个回答

6

5
您可以按照文章https://github.com/angular/angular.js/issues/1838中的方法使用resolve处理程序。
请查看此快速示例,并注意resolve中的警报语句。 http://jsfiddle.net/Wk7WD/34/
.when('/detail/:id/', {
    resolve: {
        load: function ($route, dataService) {
            alert("hello");
            //Your statements instead of all this which I found in an example
            return dataService.load($route.current.params.id);
        }
    }
})

你可以使用自己的语句代替警告


1

使用 redirectTo

app.config(['$routeProvider',function($routeProvider) {
    $routeProvider
    .when('/auth/logout',{
        redirectTo:'/'

    })
});

希望这对您有用 :)

尝试一下,不确定是否有帮助,因为我需要运行AthLogout控制器,然后重定向... - itsme

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接