在我的Angular应用程序中,我需要创建一个持久性服务接口,该接口根据浏览器中可用的持久性机制调用具体实现.我正在考虑使用通用storageService来实现它,该服务调用了解存储机制的特定storageService.
例如,通用storageService将提供以下接口:
angular .module('app.storage') .factory('storageService',storageService); function storageService() { return { saveItem: saveItem,getItem: getItem } ... }
存储服务将有多个实现,例如: localStorageService,indexedDbStorageService,websqlStorageService.
if (isWebsqlAvailable()) { // inject websqlStorageService } else if (isIndexedDbAvailable() { // inject indexedDbStorageService } else if (isLocalStorageAvailable() { // inject localStorageService }
解决方法
angular .module('app.storage') .factory('storageService',['$injector',storageService]); function storageService($injector) { var svc; if (isWebsqlAvailable()) { svc = $injector.get('websqlService'); } else if (isIndexedDbAvailable() { svc = $injector.get('indexedDbService'); } else if (isLocalStorageAvailable() { svc = $injector.get('localStorageService'); } return svc; } angular .module('app.storage').factory('websqlService',websqlService); function websqlService(){ return { saveItem: saveItem,getItem: getItem } function getItem(){ } function saveItem(){ } } angular .module('app.storage').factory('indexedDbService',indexedDbService); function indexedDbService(){ return { saveItem: saveItem,getItem: getItem } function getItem(){ } function saveItem(){ } }
然后,您只需要在任何地方注入storageService.