使用 $resource 和 $q 初始化 $scope 变量
initialize $scope variable using $resource and $q
我正在尝试使用从服务调用 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
有关,但如何根据我的要求解决它?因为我以后也想重用这个功能。
您不能 return 从异步操作。使用 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
现在 return 是 preDefinedCategoryService.rest.query
函数调用的结果,它是承诺对象。
我正在尝试使用从服务调用 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
有关,但如何根据我的要求解决它?因为我以后也想重用这个功能。
您不能 return 从异步操作。使用 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
现在 return 是 preDefinedCategoryService.rest.query
函数调用的结果,它是承诺对象。