从AngularJS控制器

时间:2016-09-02 11:42:44

标签: javascript angularjs cordova phonegap-plugins cordova-plugins

我有第三方条码扫描程序插件。我需要从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
       );
}

当我尝试在角度控制器中执行此操作时,例如:

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
       );
     }

现在,在角度控制器中,我将插件调用包装在deviceready事件侦听器中。警报说“fireScanner已启用”正在触发,但条形码扫描程序插件未被触发。我确信我错过了一些简单的东西,但我无法弄清楚是什么。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

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