我是angularjs的新手,我知道有很多关于这个错误的问题, 不幸的是,我找不到适合我的问题的答案。
我有一个拥有所有功能的工厂,以及使用它们的控制器。在一个控制器中,我得到了一个GET函数,它返回一个数组,我的大多数函数写得几乎相同,以及与这个函数完全相同的函数,只有不同的变量名/ url,但是这个错误只发生在这个功能:
控制器:
$scope.getAllFunction = function(){
appServicesProvider.getAll($scope.var1).then(function(res){
$scope.var2 = res;
})
};
Factory(appServicesProvider):
function getAll(var1){
$http.get(restURL+var1).then(
function(response){
return [].concat(response.data.var2)
}
);
}
正如我所说,有更多的功能写得完全相同,只有这个功能不起作用,这使我更难解决。 感谢给予的任何帮助!
答案 0 :(得分:1)
您必须退回承诺
function getAll(var1){
return $http.get(restURL+var1).then(
function(response){
return [].concat(response.data.var2)
}
);
}
<小时/> 或者,您可以使用
$q
重写工厂以返回包含已解决承诺的对象
app.factory('appServicesProvider', function() {
return {
getAll: function(var1) {
var defer = $q.defer();
$http.get(restURL + var1).then(function(response) {
defer.resolve([].concat(response.data.var2));
}).catch(function(response, status) {
defer.reject(response.data.message);
});
return defer.promise;;
}
}
});