angularjs – $rootlcope在$urlRouterProvider.otherwise中未定义

前端之家收集整理的这篇文章主要介绍了angularjs – $rootlcope在$urlRouterProvider.otherwise中未定义前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在$urlRouterProvider.otherwise中使用它时,$rootScope是未定义的.

我的目标是检查用户当前是否登录,在登录期间我在rootScope上设置变量.

有趣的是,如果我让$rootScope成为第一个参数,那么我开始得到$injector的错误.

$urlRouterProvider.otherwise(function ($injector,$location,$rootScope) {
        console.log("Otherwise Executed");

        try {

            var $state = $injector.get("$state");

            toastr.options.positionClass = "toast-top-full-width";
            toastr["error"]($location.$$path + ",Page not Found,names are case sensitive !");
            toastr.options.positionClass = "toast-top-right";

            if (typeof $rootScope.currentUser === 'undefined')
                $state.go("Login");
            else
                $state.go("dashboard"); //redirect to a 404 page
        } catch (e) {
          return "/login"
        }

    });

解决方法

来自urlRouter源代码

* @param {string|object} rule The url path you want to redirect to or a function 
* rule that returns the url path. The function version is passed two params: 
* `$injector` and `$location` services,and must return a url string.
*
* @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance
*/
this.otherwise = function (rule) {

使用var $rootScope = $injector.get(“$rootScope”);

猜你在找的Angularjs相关文章