Angular-indexedDB:Firefox的问题

时间:2014-07-23 07:03:50

标签: angularjs indexeddb

我在我的应用程序中使用AngularJS和IndexedDB。 GitHub上有一个非常好的工具,它包含一个用于IndexedDB的AngularJS模块。该库名为Angular-indexedDB,可用here

当我尝试使用Firefox 31(最新版本)打开现有应用程序时,我遇到了问题。

当我打开控制台时,我看到以下消息:

TypeError: setting a property that has only a getter

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

我已经使用AngularJS $窗口分叉了angular-indexedDB并实现了解决方案。我还发送了一个拉取请求,希望它很快会被整合。

我完全删除了使用全局命名空间的前两行。然后,我将实现移动到indexedDB提供程序的 $ get 函数。现在看来如下:

    module.$get = ['$q', '$rootScope', '$window', function($q, $rootScope, $window) {

       if(!('indexedDB' in $window)) {
             $window.indexedDB = $window.mozIndexedDB || $window.webkitIndexedDB || $window.msIndexedDB;
       }

       var IDBKeyRange = $window.IDBKeyRange || $window.mozIDBKeyRange || $window.webkitIDBKeyRange || $window.msIDBKeyRange;
       ...

如果你看here,你可以找到完整的实现。只需用这个替换你现有的脚本,它就可以在Firefox 31中正常工作。

答案 1 :(得分:0)

要修复问题,我必须更改此库的代码(我将尽快发送拉取请求)。

要让它在Firefox中运行,请使用此JS file替换第9行:

if(!('indexedDB' in window)) {
    var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
}

修复很简单。如果indexedDB不在窗口中,则意味着我可以创建第一个。