我为$ http创建了一个工厂,如下所示
TestApp.factory('TestHttpFactory', function ($http) {
return $http({
method: 'GET',
url: 'http://www.domain.com/api/get_item/?item_id=:id',
params: { id: '@id' }
});
});
在控制器中我需要获取API返回的值(如下所示)。要获取数据并在代码中使用它,我使用的是成功方法,它可以正常工作:
var MyCtrl = function ($scope, $location, $http, $routeParams, TestHttpFactory) {
TestHttpFactory
.success(function (data) {
$scope.item = data;
//do something with $scope.item
});
};
但是,我不确定如何将参数传递给工厂,以下失败并显示错误: object不是函数。
TestHttpFactory({id : $routeParams.id})
.success(function (data) {
$scope.item = data;
});
我应该如何将参数传递给工厂?
答案 0 :(得分:3)
TestApp.factory('TestHttpFactory', function ($http) {
return function(id){
return $http({
method: 'GET',
url: 'http://www.domain.com/api/get_item/?item_id=:id',
params: { id: id }
});
}
});
然后在你的控制器中你可以做
var MyCtrl = function ($scope, $location, $http, $routeParams, TestHttpFactory) {
TestHttpFactory(1234)
.success(function (data) {
$scope.item = data;
//do something with $scope.item
});
};