我尝试在服务中的以下工厂中的帖子/: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参数?
答案 0 :(得分:2)
就像您注入$ http服务一样,您还必须注入$ stateParams服务:
.factory('DetailService', function($http, $stateParams) {