sencha touch2:将数据从回调保存到上下文中

时间:2013-06-07 16:06:42

标签: callback sencha-touch-2 phonegap-plugins

我正在开发一个使用phoneGap条形码扫描程序插件的sencha touch 2应用程序。

在控制器中,我编写了一个处理扫描视图按钮的点击事件的函数(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 个答案:

答案 0 :(得分:1)

试试这个:

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