Я бы передал ссылку на функцию на параметр обратного вызова.Теперь вы вызываете функцию.
// Definition of the callback function
this.getListOfPossibleDrives = function (chosenBook) {
// Your code when a book is selected
}
// Configuration for the comboBox
var config = {
fieldLabel : i18n._('Department code'),
xtype : 'combo',
...
store : ...,
listeners : {
scope : this,
'select': self.getListOfPossibleDrives
}
}
Когда в параметре или объекте вы делаете somefunction () (с круглыми скобками / скобками), вы фактически вызываетефункция, так что вам нужно в вашей конфигурации, или определить функцию, как вы уже делали в начале, или передать ссылку на другую функцию.
Это не волшебство, это только то, что вы можете передавать функциив качестве параметров.Например, вы можете получить следующее:
this.myFunctionOne = function (myStringParam) {
// Do things
}
this.anotherFunction = function (callback) {
// Do things... and call a callback function received as param
callback('hello');
}
this.anotherFunction(this.myFunctionOne);
// Or you can do directly
this.anotherFunction(function(param) {
console.log(param);
});
// With ES6 syntax
this.anotherFunction((param) => {
console.log(param);
});
Когда вы передаете функцию, вам не нужно указывать параметры, которые она должна получить.
anotherFunction вызовет функцию обратного вызова (полученную функцию) со строкой hello , поэтому в зависимости от функции она будет выполнять то или иное действие:
this.anotherFunction(function(param) {
console.log('I print a different message:', param);
});
Последняя выдаст: Я печатаю другое сообщение: привет