Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角度索引Ddb:Firefox的问题_Angularjs_Indexeddb - Fatal编程技术网

Angularjs 角度索引Ddb:Firefox的问题

Angularjs 角度索引Ddb:Firefox的问题,angularjs,indexeddb,Angularjs,Indexeddb,我在应用程序中使用AngularJS和IndexedDB。GitHub上有一个非常好的工具,它包含一个用于IndexedDB的AngularJS模块。该库称为Angular indexedDB,可以使用 当我尝试使用Firefox版本31(最新版本)打开现有应用程序时,我遇到了一些问题 打开控制台时,我看到以下消息: TypeError: setting a property that has only a getter 你知道如何解决这个问题吗?要解决这个问题,我必须更改这个库的代码(我将很

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

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

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

TypeError: setting a property that has only a getter

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

要解决这个问题,我必须更改这个库的代码(我将很快发送pull请求)

要使其在Firefox中工作,请将第9行替换为:


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

我已经分叉了AngularIndexedDB,并使用AngularJS$window实现了解决方案。我还发送了一个拉请求,希望它能很快被集成

我完全删除了使用全局名称空间的前两行。然后,我将实现移动到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;
       ...

如果您查看,您可以找到完整的实现。只要用这个脚本替换现有脚本,它在Firefox 31中应该可以正常工作。

因为我没有编写这个库,所以我不确定。从我对这段代码的理解来看,我认为这很重要,因为某些版本的浏览器似乎有不同的变量名来承载IndexedDB(例如mozIndexedDB)。你有什么建议吗?如果是这样的话,请你发一个帖子作为回答好吗?事实上你是对的。我们可以将其移动到$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;
       ...