предотвратить срабатывание функции
Делаю:
{ xtype: 'button', iconCls: 'icon-delete', text: 'Test',handler: testfn ('alert')}
...
function testfn (fn){
return false;
alert(fn);
}
Работает Если запускать без аргумента. а с аргументом - не робит =( Подскажите как сделать так, чтобы работало? |
function testfn(fn){
alert(fn);
};
var object = { handler: testfn("test") }; // "test"
alert( object.handler ); // undefined
Строчка 5: интерпретатор сначала выполнит функцию (мы ведь вызываем ее с помощью круглых скобок), затем присвоит свойству handler результат выполнения функции, т.е. то, что она возвращает. Если функция не возвращает ничего явно (оператор return), она неявно возвращает undefined. Соответственно, object.handler === undefined (второй alert). |
Ладно, тогда задам вопрос напрямую:
Какой код нужен что бы при нажатии на кнопку в тулбаре - срабатывала функция с аргументом? Обычно срабатывает еще при загрузке страницы. Потом не работает. |
Хватит тупить уже! Тебе сказали уже как нужно делать.
|
Цитата:
Смысла прерывать событие в данном случае нет, т.к. тогда зачем его ставить. Вместо передачи функции в handler, ты её запускаешь. Аргументы передаются так. Либо через scope, либо через createDelegate 1 -
{
xtype: 'button',
iconCls: 'icon-delete',
text: 'Test',
handler: testfn
scope:{text:'alert'}
}
2 -
{
xtype: 'button',
iconCls: 'icon-delete',
text: 'Test',
handler: testfn
scope:this
}
3 -
var sayHi = function(name){
alert('Hi, ' + name + '. You clicked the "' + this.text + '" button.');
}
var btn = new Ext.Button({
text: 'Say Hi',
renderTo: Ext.getBody()
});
btn.on('click', sayHi.createDelegate(btn, ['Fred']));
Или
function myButtonHandler(a,b,c){
console.log(a);//1
console.log(b);//2
console.log(c);//3
}
var myButton = new Ext.Button({
id : 'myButton',
renderTo : Ext.getBody(),
text : 'Save',
handler : myButtonHandler.createDelegate(this, [1,2,3])
});
|
может я чего не понимаю, но как такая функция может вообще работать (да или без аргумента, пофигу), если она сразу возвращает результат??!
function testfn (fn){
return false;
alert(fn);
}
|
Цитата:
Ему нужно было лишь вызывать обработчик с параметрами. |
| Часовой пояс GMT +3, время: 02:29. |