我有一个工厂areaFactory
,在里面我有这个:
return {
GetAreas : function(depKey){
var areaPromise = AppService.getArea(depKey);
areaPromise.then(function (Obj){
var areas = Obj['rows'];
var areaList = [];
angular.forEach(areas, function(obj){
areaList.push({
id: obj[0],
name: obj[1]
});
});
return areaList;
});
}
}
当我从控制器$scope.areas = AreaFactory.GetAreas(key);
调用$scope.areas
变得未定义时,我认为这是因为我的工厂在我的承诺完成之前返回undefined
。
在返回区域列表之前,如何让工厂等到承诺完成?
答案 0 :(得分:2)
从工厂方法返回承诺:
GetAreas : function(depKey){
var areaPromise = AppService.getArea(depKey);
return areaPromise.then(function (Obj){
....
});
}
然后在控制器中:
AreaFactory.GetAreas(key).then(function(list){
$scope.areas = list;
});
答案 1 :(得分:0)
当您返回承诺时,请确保您在控制器中处理错误情况。 例如:
AreaFactory.GetAreas(key).then(
function(list){
$scope.areas = list;
},
function(error) {
//handle error here
}
);