0

Я сканирую штрих-код, используя плагины сканера штрих-кода в телефоне. Получив значение, я хочу показать это в текстовом поле. Ниже мой текст поле код:Как изменить значение текстового поля в sencha touch?

{ 
    xtype : 'textfield', 
     id : 'barcodetextfield', 
    width : 300, 
    margin : '0 0 0 10', 
    labelWidth : '40%', 
    label : 'Enter Barcode'            
} 

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

window.plugins.barcodeScanner.scan(function(result) { 
    this.getBarcodebox.setValue(""+result.text); 
}, function(error) { 
    alert("Scanning failed: " + error); 
}); 

И я поставил реф в контроллере, как показано ниже:

barcodebox : '#barcodetextfield', 

Вот весь мой код контроллера :::

Ext.define('MyApp.controller.MyController', { 
extend : 'Ext.app.Controller', 
config : { 
    refs : { 
     TitlePanel : 'login', 
     dashboardpanel : 'dashboard', 
     ConsumerSignup : 'consumersignup', 
     AddtoWishlog : 'addwishlog', 
     wishlogsummary : 'wishlogsummarylist', 
     FeedbackSummary : 'feedbacksummarylist', 
     ConsumerSignin : 'Consumersignin', 
     barcodebox : '#barcodetextfield', 
     labelid : 'title' 
    }, 
    views : [ 'TitlePanel', 'dashboardpanel', 'ConsumerSignup', 
      'AddtoWishlog', 'wishlogsummary', 'FeedbackSummary', 
      'ConsumerSignin' ], 

    control : { 
     "#LoginBtn" : { 
      tap : 'onLoginButtonTap' 
     }, 

     "#wishloghomebutton" : { 
      tap : 'onWishlogHomeButtonTap' 
     }, 

     "#feedbacksummaryhomebutton" : { 
      tap : 'onFeedbackHomeButtonTap' 
     }, 

     "#wishlogbtn" : { 
      tap : 'onWishlogButtonTap' 
     }, 

     "#Feedbackbtn" : { 
      tap : 'onFeedbackButtonTap' 
     }, 

     "#signup" : { 
      tap : 'onSignupButtonTap' 
     }, 

     "#capturebtn" : { 
      tap : 'onCaptureButtonTap' 
     }, 

     "#consumersignuphomebutton" : { 
      tap : 'onConsumerSignupHomeButtonTap' 
     }, 

     "#selectphoto" : { 
      tap : 'onSelectPhotoButtonTap' 
     }, 

     "#scanbutton" : { 
      tap : 'onScanButtonTap' 
     } 

    } 
}, 

slideLeftTransition : { 
    type : 'slide', 
    direction : 'left' 
}, 
slideRightTransition : { 
    type : 'slide', 
    direction : 'right' 
}, 

onLoginButtonTap : function(button, e, options) { 

    Ext.Viewport.setActiveItem(this.getDashboardpanel(), 
      this.slideLeftTransition); 
    // this.getLabelid.setHtml('Dashboard'); 
}, 

onWishlogButtonTap : function(button, e, options) { 

    Ext.Viewport.setActiveItem(this.getWishlogsummary(), 
      this.slideLeftTransition); 
}, 

onFeedbackButtonTap : function(button, e, options) { 

    Ext.Viewport.setActiveItem(this.getFeedbackSummary(), 
      this.slideLeftTransition); 
}, 

onSignupButtonTap : function(button, e, options) { 

    Ext.Viewport.setActiveItem(this.getConsumerSignup(), 
      this.slideLeftTransition); 
}, 

onWishlogHomeButtonTap : function(button, e, options) { 

    Ext.Viewport.setActiveItem(this.getDashboardpanel(), 
      this.slideRightTransition); 
}, 

onFeedbackHomeButtonTap : function(button, e, options) { 

    Ext.Viewport.setActiveItem(this.getDashboardpanel(), 
      this.slideRightTransition); 
}, 

onConsumerSignupHomeButtonTap : function(button, e, options) { 

    Ext.Viewport.setActiveItem(this.getDashboardpanel(), 
      this.slideRightTransition); 
}, 

onCaptureButtonTap : function(button, e, options) { 
    navigator.camera.getPicture(onPhotoURISuccess, onFail, { 
     quality : 100, 
     destinationType : Camera.DestinationType.FILE_URI 
    }); 

    function onPhotoURISuccess(imageURI) { 
     // console.log(imageURI); 
     var largeImage = document.getElementById('capturedimage'); 
     largeImage.style.display = 'block'; 
     largeImage.src = imageURI; 
    } 

    function getPhoto(source) { 
     // Retrieve image file location from specified source 
     navigator.camera.getPicture(onPhotoURISuccess, onFail, { 
      quality : 100, 
      destinationType : destinationType.FILE_URI, 
      sourceType : source 
     }); 
    } 
    function onFail(message) { 
     alert('It is failed: ' + message); 
    } 

}, 

onSelectPhotoButtonTap : function(button, e, options) { 
    navigator.camera.getPicture(onPhotoURISuccess, onFail, { 
     quality : 50, 
     destinationType : navigator.camera.DestinationType.FILE_URI, 
     sourceType : navigator.camera.PictureSourceType.PHOTOLIBRARY 
    }); 

    function onPhotoURISuccess(imageURI) { 
     // console.log(imageURI); 
     var largeImage = document.getElementById('capturedimage'); 
     largeImage.style.display = 'block'; 
     largeImage.src = imageURI; 
    } 

    function getPhoto(source) { 
     // Retrieve image file location from specified source 
     navigator.camera.getPicture(onPhotoURISuccess, onFail, { 
      quality : 100, 
      destinationType : destinationType.FILE_URI, 
      sourceType : source 
     }); 
    } 
    function onFail(message) { 
     alert('It is failed: ' + message); 
    } 
}, 

onScanButtonTap : function(button, e, options) { 
    window.plugins.barcodeScanner.scan(function(result) { 
     this.getBarcodebox().setValue(""+result.text); 

// предупреждение ("Мы получили штрих-код \ n "+ //" Результат: "+ result.text); }, функция (ошибка) { предупреждение («Ошибка сканирования:» + ошибка); }); } });

Когда я показываю значение в диалоговом окне, оно отображается правильно. Но не удалось установить в текстовое поле. Как я могу установить штрих-код? Пожалуйста помоги.

+0

ошибку ниже я am getting: Не могу вызвать метод setValue из undefined –

ответ

2

Если:

this.getBarcodebox.setValue(""+result.text); 

Не быть вызов метода?

this.getBarcodebox().setValue(""+result.text); 

Это, конечно, если вы добавили barcodebox как ref в контроллере:

refs: { 
     barcodebox: '#barcodtext' 
    } 

Примечание опечатка в id: #barcodtext (отсутствующего «е») и убедитесь, что это равно до значения, указанного в селекторе ref.

- Edit

Он любит выглядеть, что this выходит за рамки вашей функции обратного вызова и, следовательно, не относится к контроллеру. Вы могли бы попробовать что-то следующим образом:

window.plugins.barcodeScanner.scan(function(result) { 
    var controller = Ext.app.Application.getController('MyController'); 
    controller.getBarcodebox.setValue(""+result.text); 
}, function(error) { 
    alert("Scanning failed: " + error); 
}); 
+0

Я отредактировал код .. вы можете проверить .. но все равно getiing error say: Ошибка в успешном обратном вызове: BarcodeScanner2 = TypeError: Не удается вызвать метод setValue из undefined –

+1

В вашем отредактированном коде я до сих пор не вижу скобок за getBarcodebox **() **? Вы их добавили? – Raxr

+0

Я не включил() в getBarcodebox. нужно добавить? –

1

Вместо использования barcodebox : '#barcodetextfield', в refs попробовать с getCmp()

var bc = Ext.getCmp('barcodetextfield'); 

после этого bc.setvalue(''+result.text);

Я надеюсь, что это помогает ..

+0

Пробовал таким образом ... не показывает никакой ошибки, но это не дает мне штрих-код в текстовом поле обратно –