angularjs - 使用 ui-router-extras-future-state 模块登录后注册 future 状态

标签 angularjs angular-ui-router angular-ui-router-extras

我自己试图在登录后根据用户类型注册 future 状态。

例如:
如果 user_typebuyer ,然后我需要注册我从 futureStates_buyer.json 维护的所有路由器

如果 user_typeadmin ,然后我需要注册我从 futureStates_admin.json 维护的所有路由器

实验一(根据 sample )

示例网址:http://christopherthielen.github.io/ui-router-extras/example/future/

我可以在配置阶段设置以下配置。我知道提供程序设置应该在配置阶段。

app.config(function($stateProvider, $urlRouterProvider, $futureStateProvider) {

 $futureStateProvider.stateFactory('ngload', ngloadStateFactory); 
 $futureStateProvider.addResolve(loadAndRegisterFutureStates);

});

工作演示:http://plnkr.co/edit/9dUm0f6g2V5PM4m7YlTD?p=preview

实验2(这是我正在尝试的)

但是,就我而言,我不想在配置阶段为整个应用程序注册所有路由器。这将是非常高的配置。所以我正在尝试的是,一旦登录,我可以在登录响应中获取用户类型,基于该用户类型,我需要注册 future 的状态。
//config phase
app.config(function($stateProvider, $urlRouterProvider, $futureStateProvider) {

 //Planned to use futureStateProvider later in controller
  lazyLoad = {stateProvider: $stateProvider, futureStateProvider:$futureStateProvider};

});


//Login controller
app.controller('LoginController', ['$scope', '$rootScope', '$state', '$http', function($scope, $rootScope, $state, $http) {

     $scope.doLogin = function(){

            //After successfull login
            //Service invocation comes here
            console.log("Logged in!!");
            $rootScope.userInfo = {"loggedIn" : true };
            $state.go('dashboard');

            //Now I want to register future state based on login response i.e user_type
            // If user type is buyer, I want to registrer futureStates_buyer.jsom
            // If user type is vendor, I want to registrer futureStates_vendor.jsom

            lazyLoad.futureStateProvider.stateFactory('ngload', ngloadStateFactory); // register AngularAMD ngload state factory
            lazyLoad.futureStateProvider.addResolve(loadAndRegisterFutureStates);

        }

}]);

不工作:http://plnkr.co/edit/pCEKLopOqSKghermTHP8?p=preview

任何帮助将非常感激。提前致谢 :)

最佳答案

我已通过更改 controller 中的代码解决了此问题部分如下,它工作正常。

   //Login controller
    app.controller('LoginController', ['$scope', '$rootScope', '$state', '$http', function($scope, $rootScope, $state, $http) {
        $scope.login = {"username":"admin", "password":"admin123"};

        $scope.doLogin = function(){

            //After successfull login
            //Service invocation comes here
            console.log("Logged in!!");
            $rootScope.userInfo = {"loggedIn" : true };


            //Now I want to register future state based on login response i.e user_type
            // If user type is buyer, I want to registrer futureStates_buyer.jsom
            // If user type is vendor, I want to registrer futureStates_vendor.jsom

            /*          
            var loadAndRegisterFutureStates = function ($http) {
              // $http.get().then() returns a promise
              return $http.get('futureStates_buyer.json').then(function (resp) {
                angular.forEach(resp.data, function (fstate) {
                  // Register each state returned from $http.get() with $futureStateProvider
                  lazyLoad.futureStateProvider.futureState(fstate);
                });
              });
            };
            */

            $http.get('futureStates_buyer.json').then(function (resp) {
                angular.forEach(resp.data, function (fstate) {
                  // Register each state returned from $http.get() with $futureStateProvider
                  lazyLoad.futureStateProvider.futureState(fstate);
              });

              $state.go('dashboard');
      });

            lazyLoad.futureStateProvider.stateFactory('ngload', ngloadStateFactory); // register AngularAMD ngload state factory
            //lazyLoad.futureStateProvider.addResolve(loadAndRegisterFutureStates);

        }

    }]);

工作演示:http://plnkr.co/edit/ZXty2SkmGbuwnpaJoh7C?p=preview

关于angularjs - 使用 ui-router-extras-future-state 模块登录后注册 future 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28701664/

相关文章:

javascript - 当通过 `link` 属性进行动态更改时,angular 指令无法正常工作

angularjs - 从 json 文件/http 创建状态

javascript - 无法使用 ng-repeat 和 ng-bind-html 渲染原始 HTML

angular - 从 Angular 的详细信息页面导航回来后保持搜索页面的状态

javascript - Webapi 导出到 excel 下载的损坏文件

javascript - 根据属性值 angularJs 将类添加到特定列表项

javascript - 如何从 url 中删除 `&` 符号及其后的所有文本

angularjs - 如何查看 AngularJS/UI-Router 中配置了哪些状态?

angular - 如何以 Angular 方式在 CustomReuseStrategy 中注入(inject)服务?