从AngularJS控制器中调用phonegap插件

Calling phonegap plugin from AngularJS controller

本文关键字:phonegap 插件 调用 AngularJS 控制器      更新时间:2023-09-26

我有一个第三方条码扫描器插件。我需要从angularJS控制器调用这个插件。我能够从index.js中成功触发扫描仪上的deviceready事件,该事件附带了一个基本的phonegap项目。但是,当我尝试从控制器调用插件时,扫描仪插件没有被触发。下面你可以找到我的index.js代码:

onDeviceReady: function() {
        app.receivedEvent('deviceready');
        cordova.plugins.pdf417Scanner.scan(function callback(scanningResult){
            //handle success callback
        }, function errorHandler(err){
           //handle error
        }, arg1, arg2
       );
}

当我尝试在angular控制器中这样做时,比如:

var myApp = angular.module("scanApp",[]);
myApp.controller("mainCtrl", function(){
     document.addEventListener('deviceready', fireScanner, false);
     function fireScanner(){
          alert("fireScanner is on");
          cordova.plugins.pdf417Scanner.scan(function callback(scanningResult){
           //handle success callback
        }, function errorHandler(err){
           //handle error
        }, arg1, arg2
       );
     }

现在,在angular控制器中,我将插件调用封装在deviceready事件监听器中。警报说"fireScanner是on"被触发,但条码扫描器插件没有被触发。我确信我错过了一些简单的东西,但我不知道是什么。任何帮助将非常感激!

我发现问题是什么了!这是我传递给插件的参数!在index.js中,我在onDeviceReady函数下创建arg1和arg2,并且它没有在onDeviceReady函数之外使自己可用。我没有在控制器中创建arg1和arg2,它在控制器中根本不可用,因此插件没有被触发。我必须在控制器中定义arg1和arg2才能使其工作