Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.06.2011, 12:44
Кандидат Javascript-наук
Отправить личное сообщение для posta Посмотреть профиль Найти все сообщения от posta
 
Регистрация: 27.08.2010
Сообщений: 115

предотвратить срабатывание функции
Делаю:
{ xtype: 'button', iconCls: 'icon-delete', text: 'Test',handler: testfn ('alert')}

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


Работает Если запускать без аргумента. а с аргументом - не робит =(
Подскажите как сделать так, чтобы работало?
Ответить с цитированием
  #2 (permalink)  
Старый 05.06.2011, 15:30
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

function testfn(fn){
  alert(fn);
};

var object = { handler: testfn("test") }; // "test"

alert( object.handler ); // undefined

Строчка 5: интерпретатор сначала выполнит функцию (мы ведь вызываем ее с помощью круглых скобок), затем присвоит свойству handler результат выполнения функции, т.е. то, что она возвращает. Если функция не возвращает ничего явно (оператор return), она неявно возвращает undefined. Соответственно, object.handler === undefined (второй alert).
Ответить с цитированием
  #3 (permalink)  
Старый 05.06.2011, 16:39
Кандидат Javascript-наук
Отправить личное сообщение для posta Посмотреть профиль Найти все сообщения от posta
 
Регистрация: 27.08.2010
Сообщений: 115

Ладно, тогда задам вопрос напрямую:

Какой код нужен что бы при нажатии на кнопку в тулбаре - срабатывала функция с аргументом?

Обычно срабатывает еще при загрузке страницы. Потом не работает.
Ответить с цитированием
  #4 (permalink)  
Старый 05.06.2011, 17:22
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Хватит тупить уже! Тебе сказали уже как нужно делать.
Ответить с цитированием
  #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.
Ответить с цитированием
  #6 (permalink)  
Старый 04.07.2011, 17:30
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

может я чего не понимаю, но как такая функция может вообще работать (да или без аргумента, пофигу), если она сразу возвращает результат??!
function testfn (fn){
	return false;	
	alert(fn);
}
Ответить с цитированием
  #7 (permalink)  
Старый 04.07.2011, 17:46
Аватар для mycoding
NodeJS developer - ушел
Отправить личное сообщение для mycoding Посмотреть профиль Найти все сообщения от mycoding
 
Регистрация: 06.01.2010
Сообщений: 1,022

Сообщение от melky Посмотреть сообщение
может я чего не понимаю, но как такая функция может вообще работать (да или без аргумента, пофигу), если она сразу возвращает результат??!
function testfn (fn){
	return false;	
	alert(fn);
}
Просто posta перепутал.
Ему нужно было лишь вызывать обработчик с параметрами.

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


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
предотвратить срабатывание функции posta Общие вопросы Javascript 8 05.06.2011 16:37
динамическое содержимое функции alfmaster Общие вопросы Javascript 2 28.05.2011 17:10
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21
Двойное срабатывание функции Askhsiv Элементы интерфейса 2 22.06.2010 17:36
Подскажите, как работает простой код (замыкание функции)? Dotod Общие вопросы Javascript 5 02.12.2009 04:03