Cordova:LocalFileSystem未定义

时间:2015-01-16 13:53:59

标签: cordova cordova-plugins html5-filesystem ionic

我无法使cordova文件系统正常工作。我有一个具有以下依赖项的项目:

com.ionic.keyboard 1.0.3 "Keyboard"
org.apache.cordova.console 0.2.12 "Console"
org.apache.cordova.device 0.2.13 "Device"
org.apache.cordova.file 1.3.2 "File"
org.apache.cordova.file-transfer 0.4.8 "File Transfer"

app.js中,我定义了对控制器模块的依赖:

angular.module('starter', ['ionic', 'controllers']);

控制器代码基本上是这样的:

angular.module('controllers', [])
  .controller('GalleryCtrl', function ($scope) {
    function success() {...}
    function error() {...}
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, error);
  }
}

我得到的是:

LocalFileSystem is not defined

此外,requestFileSystem未定义。这种行为可能是什么原因?

我使用的是cordova 4.1.2和离子1.3.1。

编辑:这是相应的html标记:

<body ng-app="starter" ng-controller="GalleryCtrl">
<ion-nav-view>
    <ion-slide-box id="slideBox">
        <ion-slide ng-repeat="..."> <!-- details omitted -->
        </ion-slide>
    </ion-slide-box>
</ion-nav-view>
</body>

3 个答案:

答案 0 :(得分:10)

您只是不等待 deviceReady 事件被触发,因此尚未加载File插件。改变

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, error);

document.addEventListener("deviceready", function() { 
  window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, error);
}, false);

LocalFileSystem.PERSISTENT 可能是未定义的(在模仿等时一直是我),但它可以替换为 1 ,因为它只是一个常量

答案 1 :(得分:-1)

requestFileSystem无法使用的原因之一是因为设备尚未就绪。

在窗口准备就绪后尝试运行代码:

$scope.$on('$ionicView.enter', function(event, data) {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, error);
});

我得到的LocalFileSystem没有在我的编辑器中定义,因为它是一个插件(根据我的理解)但是一旦加载了窗口,我可以使用requestFileSystem和LocalFileSystem按预期工作。

答案 2 :(得分:-1)

对于离子注入$ionicPlatform,然后使用:

$ionicPlatform.ready(function() {       
   window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, error);
}, false);