Показать сообщение отдельно
  #5 (permalink)  
Старый 04.07.2011, 12:47
Аватар для mycoding
NodeJS developer - ушел
Отправить личное сообщение для mycoding Посмотреть профиль Найти все сообщения от mycoding
 
Регистрация: 06.01.2010
Сообщений: 1,022

Сообщение от posta Посмотреть сообщение
Делаю:
{ xtype: 'button', iconCls: 'icon-delete', text: 'Test',handler: testfn ('alert')}

...
function testfn (fn){
	return false;	
	alert(fn);
}


Работает Если запускать без аргумента. а с аргументом - не робит =(
Подскажите как сделать так, чтобы работало?
Скорее всего ты ищешь как передать параметры в обработчик события.
Смысла прерывать событие в данном случае нет, т.к. тогда зачем его ставить.

Вместо передачи функции в 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])
});

Последний раз редактировалось mycoding, 04.07.2011 в 13:02.
Ответить с цитированием