JavaScript: почему нельзя получить переменную в функции обратного вызова? - PullRequest
0 голосов
/ 08 мая 2018

Я прочитал несколько различных callback документов по функциям, но, к сожалению, не удалось получить связь с variable. Что мне здесь не хватает?

checkNo: function (callback) {
    var comboQuery = Ext.ComponentQuery.query('[name=foocombo]')[0].getSelectedRecord();
    var chkno = comboQuery.get('mychkno'); //Success to get this integer value

    callback(chkno); //Error raises here. Debugger says "callback is not a function"
    //if (callback) callback(chkno); //I've tried to check callback but did not work as well.
},

setFooCombo: function () {
    var me = this;
    var fooStore = Ext.getStore('fooComboStore');
    var chkno = ''; //Trying to pass an empty value. Not sure if correct approach 
    var checkno = me.checkNo(chkno); //Trying to get returned value from above function to be able using on url.

    fooStore.getProxy().setUrl(MyApp.Url() + '/foo/list?=' + checkno); //I need pass value that return from callback to here
    if (typeof checkno === MyApp.NUMBER) {
        fooStore.load();
    }


    // I've tried another way to set new URL as below but did not work too.
    // me.checkNo(function (checkno) {
    //fooStore.getProxy().setUrl(MyApp.Url() + '/foo/list?=' + checkno);
    //     if (typeof checkno === MyApp.NUMBER) {
    //         fooStore.load();
    //     }
    // });
},

ОБНОВЛЕНИЕ : После ответа Рахула Кхандельвала были пересмотрены функции и, конечно, теперь он работает.

checkNo: function () {
    var comboQuery = Ext.ComponentQuery.query('[name=foocombo]')[0].getSelectedRecord();
    var chkno = comboQuery.get('checkno');

    return chkno;

},

setFooCombo: function () {
    var me = this;
    var fooStore = Ext.getStore('fooComboStore');
    var checkno = me.checkNo();

    fooStore.getProxy().setUrl(MyApp.Url() + '/foo/list?=' + checkno);
    if (typeof checkno === MyApp.NUMBER) {
        fooStore.load();
    }
},

Ответы [ 2 ]

0 голосов
/ 08 мая 2018
me.checkNo(function(){ return checkNo;})
0 голосов
/ 08 мая 2018

При вызове функции вы не используете функцию обратного вызова. Измените его на обычное определение функции, как показано ниже.

CheckNo: function () {
var comboQuery = Ext.ComponentQuery.query('[name=foocombo]')[0].getSelectedRecord();
var chkno = comboQuery.get('mychkno'); //Success to get this integer value

return chkno; //Error raises here. Debugger says "callback is not a function"
//if (callback) callback(chkno); //I've tried to check callback but did not work as well.

}

Чтобы понять, как работает обратный вызов, используйте ссылку ниже:

Этот вопрос StackOverflow

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...