2015-02-04 5 views
4

Новый метеор здесь. У меня возникли проблемы с использованием методов плагина Cordova от Meteor.Как назвать методы плагина Cordova от Meteor?

Вот плагин, который я забочусь о: http://plugins.cordova.io/#/package/com.phonegap.plugins.barcodescanner

Я добавил пакет в командной строке: метеор добавить Кордову: [email protected]

Ниже мой Javascript код. То, что заканчивается, происходит при запуске, метод onCallback загружается, но сканирование штрих-кода не происходит, и ни onSuccess, ни onError не вызываются. Я пробовал аналогичный подход с другими пакетами cordova, но ничего не работает. Я также попытался заменить «cordova.plugins.barcodeScanner.scan» на cordova.call с такими вариациями, как все нижние кепки, «barcodeScanner.scan», «com.phonegap.plugins.barcodescanner.scan» и т. Д., Но для нет.

if (Meteor.isCordova) { 
    Meteor.startup(function() { 
     cordova = new Cordova(); 
     cordova.addEventListener('deviceready', function() { 
      function onSuccess(result) { 
       alert("We got a barcode\n" + 
        "Result: " + result.text + "\n" + 
        "Format: " + result.format + "\n" + 
        "Cancelled: " + result.cancelled);  
      } 

      function onError(error) { 
       alert("Scanning failed: " + error);  
      } 

      function onCallback(msg) { 
       alert("Callback! " + msg); 
      } 

      cordova.call(
       'cordova.plugins.barcodeScanner.scan', 
       [onSuccess, onError], 
       onCallback); 
     }); 
    } 
} 

ответ

22

В Метеоре Кордова App, Meteor.startup работает как deviceready события, так что вы не будете нуждаться в deviceready события. Кроме того, cordova уже определен в глобальном контексте, поэтому вам не нужно пытаться создать новый экземпляр. Наконец, чтение плагина на плагинах.cordova.io объясняет, что плагин с именами помещается в cordova.plugins.barcodeScanner. В вашем случае особый интерес представляет метод сканирования класса barcodeScanner. Вы можете использовать его в meteor, как показано ниже, но обратите внимание, что это откроет сканер, когда приложение начнет с полной остановки, поэтому, вероятно, лучше вызвать метод сканирования из чего-то вроде события click.

if(Meteor.isCordova){ 
    Meteor.startup(function() { 
     cordova.plugins.barcodeScanner.scan(
      function (result) { 
       alert("We got a barcode\n" + 
        "Result: " + result.text + "\n" + 
        "Format: " + result.format + "\n" + 
        "Cancelled: " + result.cancelled); 
      }, 
      function (error) { 
       alert("Scanning failed: " + error); 
      } 
     ); 
    }); 
} 
+2

Большое спасибо Kelly !!! Хотелось бы, чтобы я мог проголосовать за ваш ответ, но, может быть, позже, когда я создам свою репутацию, прежде чем это будет разрешено! Все, что вы предложили, было правильным до точки. – silverbuggy

+3

Только что, спасибо! – silverbuggy

+0

Я получаю cordova.plugins undefined, я что-то упускаю? – octohedron

Смежные вопросы