gpt4 book ai didi

javascript - AngularJS 在 IndexedDB 调用后返回方法对象

转载 作者:行者123 更新时间:2023-12-03 07:04:52 25 4
gpt4 key购买 nike

像这样调用 IndexedDB 库后,我需要返回一个方法对象。

.factory('presentationData', ['$indexedDB', 'uuid4','$q', function ($indexedDB, uuid4, $q) {

var objectStore = $indexedDB.openStore('presentations', function(store) {
return store;
});

return objectStore.then(function(objectStore) {
var functions = getDefaultDataServiceFunctions(objectStore);

functions.getAll = function (includeFlaggedForDelete) {
if (includeFlaggedForDelete) {
return objectStore.getAll();
}
return objectStore.getAll().then(function (presentations) {
return presentations.filter(function (p) {
return !(p.meta && p.meta.localStatus === 'deleted');
});
});
};

functions.getWithLocalStatus = function (status) {
var query = $indexedDB.queryBuilder().$index('localStatus').$eq(status).compile();
return objectStore.each(query);
};

return functions;
})
}])

为什么这不返回方法对象?我不明白!!

使用这个:https://github.com/bramski/angular-indexedDB

谢谢!

最佳答案

这不会起作用,因为返回存储对象是无效的。商店将被关闭,其操作将失败。

我真的不清楚你到底想做什么。只获取数据?您需要返回一个将返回数据的 promise 。

.service('dataFetcher', ['$indexedDB', 'uuid4','$q', function ($indexedDB, uuid4, $q) {
this.getData = function() {
promise = $q.defer();
$indexedDB.openStore('presentations', function (store) {
... do what is needed to get the answer here...
promise.resolve(data);
}
return promise.promise;
}
}

使用此服务会发生类似...

.controller('MyControl', ['dataFetcher', function ($scope, dataFetcher) {
dataFetcher.getData().then( function (data) {
$scope.data = data;
});
}];

这会给你你真正寻求的东西。索引数据库采用回调机制。您需要使用它以合理的方式设计您的数据服务。

关于javascript - AngularJS 在 IndexedDB 调用后返回方法对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36869596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com