我在角度控制器中使用服务,如下所示: 我的服务:
MyServices.factory('Product', ['$http',function($http){
this.fn = function(city, state, category, categoryDetailValue) {
return $http.get('serverURL',{params: {city:city, state:state, category:category, categoryDetailValue:categoryDetailValue}}
).then(function(results){
return results.data;
});
};
}]);
我的控制器:
$scope.init = function () {
console.log(Product);
Product.fn($rootScope.city, $rootScope.name, 'param1', 'param2').then(function(results) {
// Do something with results
$scope.items = results.Transactions;
});
};
当我尝试在控制器内调用服务时,错误显示“产品未定义”;请纠正我的错误在哪里?
答案 0 :(得分:1)
使用MyServices.service('Product',...
代替MyServices.factory('Product',
我认为这是因为工厂应该是一个返回和反对的函数,而不是使用new
来调用它,所以this
不是你想象的那样。
如果你想使用工厂,那就是这样的:
MyServices.factory('Product', ['$http',function($http){
return {
fn : function(city, state, category, categoryDetailValue) {
return $http.get('serverURL', {
params: {
city:city,
state:state,
category:category,
categoryDetailValue:categoryDetailValue
}
}).then(function(results){
return results.data;
});
}
};
}]);