如何将$ stateParams从ui-router传递给service in service?

时间:2015-06-25 17:25:45

标签: javascript angularjs dependency-injection angular-ui-router angularjs-service

我有一条路线可以检索单个帖子和服务来查询我的API。但我需要将参数从URL传递给服务,以便我可以正确调用API。我无法理解如何做到这一点。

这是我到目前为止所提出的。我遗漏了与此问题无关的内容。

感谢您的帮助!

路由

myModule.config([
  '$stateProvider',
  '$urlRouterProvider',
  '$locationProvider',
  function($stateProvider, $urlRouterProvider, $locationProvider) {

    $stateProvider
      .state('post', {
        url: '/posts/:hash_id/:slug',
        templateUrl: '/js/app/views/post.html',
        controller: 'PostCtrl',
        resolve: {
          postPromise: ['posts', function(posts, $stateParams){
            //returns undefined
            console.log($stateParams);
            return posts.getOne($stateParams);
          }]
        }
      })
// etc

服务

myModule.factory('posts', ['$http', 'auth', function($http, auth){
  var o = {
    posts: [],
    post: {}
  };
  o.getOne = function(params) {
    // Returns undefined
    console.log(params);
    return $http.get('/api/v1/posts/' + params.hash_id).success(function(data){
      angular.copy(data, o.post);
    });
  };
  return o;
}])

1 个答案:

答案 0 :(得分:11)

您错过了在$stateParams resolve

中添加postPromise依赖项

<强>代码

postPromise: ['posts', '$stateParams', function(posts, $stateParams){