2013-06-07 4 views
1

Я разрабатываю приложение sencha touch 2, которое использует плагин сканера штрих-кода телефонаGap.sencha touch2: сохранение данных из обратного вызова в контекст

В контроллере я написал функцию (doScan), которая обрабатывает событие касания кнопки просмотра сканирования. Если я нажимаю кнопку сканирования, приложение вызывает плагин сканера штрих-кода через window.plugins.barcodeScanner.scan.

В обратном вызове я хотел бы назвать контроллер, чтобы создать переменную, чтобы сохранить результат сканирования, но что я делаю, я получаю ошибку

Error in error callback: org.apache.cordova.barcodeScanner381646541 = TypeError: 'undefined' is not a function

, так как функция обратного вызова неспособный получить доступ к контексту. Как мне сделать, чтобы сохранить результат сканирования в контексте приложения? Спасибо.

/** 
* Controller of the scan view 
*/ 
Ext.define('MyApp.controller.ScanController', { 
    extend: 'Ext.app.Controller', 
    config: { 
     refs: { 
      scanButton: '#scanButton' 
     }, 
     control: { 
      scanButton: { 
      tap: 'doScan' 
     } 
    } 
    }, 

    /** 
    * Scans a barcode 
    */ 
    doScan: function(button, event) { 

     window.plugins.barcodeScanner.scan(
      function(result) { 
      if (result.cancelled){ 
       console.log("the user cancelled the scan") 
      } else { 
       console.log("scannerSuccess: result=" + result.text) 
      // I'd like to call the controller here 
      } 
     }, 
     function(error) { 
      console.log("scanning failed: " + error.text) 
     } 
    ) 
}, 

doScanSuccess: function(result) { 

} 

}); 

ответ

1

Попробуйте это:

doScan: function(...) { 
    var me = this; 
    .... 
    window.plugins.barcodeScanner.scan(function(result) { 
     me.doScanSuccess(result); // 'me' refers to the controller instance 
    }...) 
} 
+0

Он работает: большое спасибо;) –