我编写了我的自定义AngularJS过滤器,它应该将id转换为name,它将从IndexedDb获得。 我写了这个过滤器:
cardsList.filter('getCollectionName', ['IndexedDb', function(IndexedDb) {
return function(idCollection) {
var val = 'not';
IndexedDb.getById(IndexedDb.STORES.COLLECTION_STORE, idCollection).then(function(data) {
val = data.name; //here dont work return data.name;
}, function(err){
$window.alert(err);
});
return val; // here is still 'not'
}; }]);
所以我有属性val,我想用id设置它的集合名称。但它的返回初始值'不'。 我知道内部呼唤不是可见的属性val。但是返回data.name;内部成功的回调不行。 我看了How do I return the response from an asynchronous call?,但我不明白如何解决我的问题。 我如何修复这个函数返回data.name来自回调?感谢名单
答案 0 :(得分:0)
您可以使用angularjs的$ q服务。 当您的承诺在$ q.all(..)
中解析时返回值cardsList.filter('getCollectionName', ['IndexedDb','$q', function(IndexedDb,$q) {
return function(idCollection) {
var val = 'not';
var promises=[];
promises.push(IndexedDb.getById(IndexedDb.STORES.COLLECTION_STORE,idCollection).then(function(data) {
val = data.name; //here dont work return data.name;
}, function(err){
$window.alert(err);
})
);
$q.all(promises).then(function(){return val;});
}; }]);