【问题标题】:I can't get $cordovaFileOpener2 to work with my ionic app.我无法让 $cordova FileOpener2 与我的 ionic 应用程序一起使用。
【发布时间】:2016-05-13 18:54:30
【问题描述】:

我正在尝试构建一个离子应用程序,当用户单击链接时,该应用程序会在用户设备上打开 PDF。但是,我在 chrome 中收到以下错误

ionic.bundle.js:25642 Error: [$injector:unpr] Unknown provider:
$cordovaFileOpener2Provider <- $cordovaFileOpener2 <- FileOpenerController http://errors.angularjs.org/1.4.3/$injector/unpr?p0=%24cordovaFileOpener2Provider%20%3C-%20%24cordovaFileOpener2%20%3C-%20FileOpenerController
    at ionic.bundle.js:13380
    at ionic.bundle.js:17574
    at Object.getService [as get] (ionic.bundle.js:17721)
    at ionic.bundle.js:17579
    at getService (ionic.bundle.js:17721)
    at Object.invoke (ionic.bundle.js:17753)
    at extend.instance (ionic.bundle.js:22311)
    at nodeLinkFn (ionic.bundle.js:21421)
    at compositeLinkFn (ionic.bundle.js:20853)
    at compositeLinkFn (ionic.bundle.js:20857)(anonymous function) @ ionic.bundle.js:25642(anonymous function) @ ionic.bundle.js:22421processQueue @ ionic.bundle.js:27887(anonymous function) @ ionic.bundle.js:27895Scope.$eval @ ionic.bundle.js:29158Scope.$digest @ ionic.bundle.js:28969scopePrototype.$digest @ hint.js:1364Scope.$apply @ ionic.bundle.js:29263scopePrototype.$apply @ hint.js:1427done @ ionic.bundle.js:23676completeRequest @ ionic.bundle.js:23848requestLoaded @ ionic.bundle.js:23789

这是我的 app.js

angular.module('CCSD_Risk', ['ionic'])

.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {
    if(window.cordova && window.cordova.plugins.Keyboard) {
      // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
      // for form inputs)
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);

      // Don't remove this line unless you know what you are doing. It stops the viewport
      // from snapping when text inputs are focused. Ionic handles this internally for
      // a much nicer keyboard experience.
      cordova.plugins.Keyboard.disableScroll(true);
    }
    if(window.StatusBar) {
      StatusBar.overlaysWebView(true);
      StatusBar.style(1); //Light
    }
  });
});

这是我的控制器 main.js

console.log('main.js loaded');

angular.module('CCSD_Risk')

.controller('mainCtrl', function($scope) {
    $scope.helloWorld = function() {
        console.log('helloWorld');
    };
})

.controller('FileOpenerController', function($scope, $cordovaFileOpener2, $ionicPlatform) {
    console.log('hi 1');
    $scope.openPDF = function() {
        console.log('hi');
        $cordovaFileOpener2.open(
            'flood-plans/cambeiro.pdf', // Any system location, you CAN'T use your appliaction assets folder
            'application/pdf'
        ).then(function() {
            console.log('Success');
        }, function(err) {
            console.log('An error occurred: ' + JSON.stringify(err));
        });
    };
})
.controller('TestController', function($scope) {
    $scope.testConsole = function() {
        console.log("this is a working controller");
    }
});

我尝试将依赖项 ngCordova 添加到我的 app.js 文件中,但这会导致出现更多错误。我不确定此时该怎么做。这是我尝试在 ionic 中构建的第一个应用程序,我对 angularJS 不太熟悉。如果您需要查看我的任何其他文件,请告诉我。

【问题讨论】:

  • 为 $cordovaFileOpener2Provider 添加 ngCordova 和模块需求

标签: javascript android ios angularjs ionic-framework


【解决方案1】:

看看

error discusstion link 和 解决方案 pluging

【讨论】:

    【解决方案2】:

    在您的 app.js 中,添加 ngCordova 依赖项: angular.module('CCSD_Risk', ['ionic', 'ngCordova']);

    在 index.html 中,确保添加了这一行: <script src="lib/ngCordova/ng-cordova.js"></script>

    就在这个现有的上方: <script src="cordova.js"></script>

    当然,您需要在您的应用程序的lib/ngCordova forder 中有ng-cordova.js

    【讨论】:

    • 这解决了我上面遇到的错误。但是,现在每当我单击应该调用 openPDF 函数的链接时,我都会收到一个 cordova is not defined 错误。
    • 这是因为与cordova插件相关的功能只能在真实设备或模拟器上使用
    • @Art Vandelay 我需要帮助......我无法让它工作......我正在使用 ionic 但我没有文件 ng-cordova.js 如何获取它?
    猜你喜欢
    • 2017-03-05
    • 2013-12-03
    • 2019-04-13
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多