Access $stateParams of new state in service called from resolve function with UI Router

前端 未结 2 938
醉酒成梦
醉酒成梦 2021-01-11 13:17

Is there a way to access $stateParams for the state you\'re transitioning to from a service called in a resolve function? With ngRoute you\'d use <

相关标签:
2条回答
  • 2021-01-11 13:56

    You can't inject the the incoming parameters into the service itself, but you can pass them to a function in the service (or you could also assign them to a property in the service).

    this plunker shows how to pass them to a function, which in turns stores them to a property in the service. Using a "dummy" property shouldn't hurt, but it is a bit ugly. :)

    It might make more sense to pass the parameters to the controller as a resolve property and then hand them out to a service from the controller constructor... that's what I'd do.

    0 讨论(0)
  • 2021-01-11 14:10

    In your resolve function in stateprovider

    resolve: {
        something: function(MyService, $stateParams){
            return MyService.doSomethingWithParam($stateParams.someParameter);
        }
    }
    

    In your service

    myService = angular.module('myService', [])
        .factory('MyService', function() {
    
            var myServiceInstance;
    
            myServiceInstance.doSomethingWithParam= function(param){
                //...store or do something with your state param here and return result
            };
    
            return myServiceInstance;
    });
    
    0 讨论(0)
提交回复
热议问题