angularJS $ stateParams在服务中

时间:2014-02-15 14:56:20

标签: javascript angularjs angularjs-service

我尝试在服务中的以下工厂中的帖子/:postId上获取JSON数据:

angular.module('sampleapp.services', [])
    .factory('DetailService', function($http) {
        return {
            getDetail: function(callback) {
                $http.get('https://example.com/posts/' + $stateParams.postId + '.json').success(callback);
            }
        };
    });

不幸的是,$ stateParams未定义。我究竟做错了什么?如果我对URL进行硬编码,则可以正常工作。

我的路由

.state('detail', {
    url: '/post/:postId',
    templateUrl: 'templates/detail.html',
    controller: 'DetailCtrl'
})

和我的控制器

.controller('DetailCtrl', function ($scope, DetailService) {
    DetailService.getDetail(function(data) {
        $scope.post = data;
    });
});

我的问题是:我如何访问工厂内的URL参数?

1 个答案:

答案 0 :(得分:2)

就像您注入$ http服务一样,您还必须注入$ stateParams服务:

.factory('DetailService', function($http, $stateParams) {