我正在尝试使用从服务调用resource.query()并返回空的函数来初始化Angualr范围变量。
以下是我的代码
控制器
$scope.categories = _processedCategories($scope.excludedCategories);
// excluded categories is an array of objects
function _processedCategories(excludedCategories) {
preDefinedCategoryService.rest.query({},
function (data) {
categories = _.filter(data._embedded.categories, function (n) {
return (n.id !== excludedCategories.id);
});
return categories
},
function () {
console.log ('error');
});
}
我将$ scope.categories变为空,但是当我$scope.categories = _.filter(..)
时,它会直接填充它们。我知道它与$promise
有关但是如何根据我的要求解决它?我想稍后再重复使用这个功能。
答案 0 :(得分:1)
您无法从异步操作返回。使用Promise API提供在加载和处理数据时调用的回调:
_processedCategories($scope.excludedCategories).$promise.then(function(categories) {
$scope.categories = categories;
});
// excluded categories is an array of objects
function _processedCategories(excludedCategories) {
return preDefinedCategoryService.rest.query({}, function (data) {
return categories = _.filter(data._embedded.categories, function (n) {
return (n.id !== excludedCategories.id);
});
}, function () {
console.log('error');
});
}
注意,_processedCategories
现在返回preDefinedCategoryService.rest.query
函数调用的结果,它是promise对象。