Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   событие на нажатие кнопки (https://javascript.ru/forum/extjs/23882-sobytie-na-nazhatie-knopki.html)

ane4ka 10.12.2011 01:39

событие на нажатие кнопки
 
в ext designer набросала форму редактора формулы.что-то вроде калькулятора.мне надо чтобы при нажатии например кнопки с значение "1" в текстовой строке появилось значение "1".extjs начала изучать недавно..очень срочно надо!!!!!!!!:help:
вот что пока сделала:
MyWindow = Ext.extend(MyWindowUi, {
    initComponent: function() {
        MyWindow.superclass.initComponent.call(this);
			this.findById("save").on("click", function(button, event) {
				Ext.MessageBox.show({
				title:'Сообщение',
				msg: 'Сохранить?',
				buttons: Ext.MessageBox.OKCANCEL,
				animateTarget: 'mb4',
				icon: Ext.MessageBox.QUESTION
				});
			});
			
			this.findById("cancel").on("click", function(button, event) {
				Ext.MessageBox.show({
				title:'Сообщение',
				msg: 'Отменить?',
				buttons: Ext.MessageBox.OKCANCEL,
				animateTarget: 'mb4',
				icon: Ext.MessageBox.QUESTION
				});
			});
			
			
    }
});

заранее очень благодарна!

Bkmz_1_ 10.12.2011 08:06

Ну может как-то так:

new Ext.Window({
        title: 'Калькулятор',
        layout: 'fit',
        width: 700,
        height: 550,
        buttons: [{
           text: '1',
           handler: function(){
                 Ext.getCmp('id-field').setValue(+'1');
           },{
           text: '2',
           handler: function(){
                 Ext.getCmp('id-field').setValue(+'2');
           }
        }]
    });


И если вы только начали не учите 3-й. Учите 4-й ExtJS

nekto_O 10.12.2011 13:40

ane4ka,
судя по коду, вы очень любите jQuery))
а вот так
this.findById("save")
в ExtJS 4+ не прокатит))
можно как-то так:
Ext.create('Ext.window.Window', {
   title: 'Калькулятор',
   width: 300,
   setInputValue: function(v){
     var input = this.down('textfield');
     input.setValue(input.getValue()+v);
   },
   setSumResult: function(){
     var input = this.down('textfield'),
         arr = input.getValue().split('+'),
         val = 0;
       
     for(var i=0; i<arr.length; i++){
         val+=parseInt(arr[i]);
     }
     input.setValue(val);
   },
   height: 300,
   buttons: [
      {
         text: '1',
         handler: function(){
             this.up('window').setInputValue(this.text);
         }
      }, {
         text: '2',
         handler: function(){
             this.up('window').setInputValue(this.text);
         }
      }, {
          text: '+',
          handler: function(){
             this.up('window').setInputValue(this.text);
          }
      }, {
          text: '=',
          handler: function(){
             this.up('window').setSumResult();
          }
      }
   ],
   items: [
        {
            layout: 'table',
            items: [
                {
                    xtype: 'textfield',
                    hideLabel: true
                }
            ]
        }
   ]
}).show();

devote 11.12.2011 03:26

Цитата:

Сообщение от nekto_O
ane4ka,
судя по коду, вы очень любите jQuery))
а вот так
this.findById("save")

ничего общего с джуквэри не вижу.

trikadin 11.12.2011 03:41

+1. Цепочки - это, блеать, особенность JS, а не jQuery!

nekto_O 11.12.2011 09:24

Цитата:

Сообщение от devote
ничего общего с джуквэри не вижу.

с чего вы взяли что я эту часть кода имел ввиду?)))
я просто указал что в ExtJS 4 такого метода нет, ибо он является устаревшим.
Цитата:

Сообщение от trikadin
+1. Цепочки - это, блеать, особенность JS, а не jQuery!

цепочка, написанная на ExtJS в данном случае не может так выглядеть ибо на кнопку обработчик таким образом нельзя повесить.
setHandler здесь применяться должен...

nekto_O 11.12.2011 12:46

Цитата:

Сообщение от trikadin
Цепочки - это, блеать, особенность JS

Особенность? хочешь сказать что, например, в C# или Java нельзя использовать цепь функций для доступа к определенному свойству/методу?)))
насмешил...

ane4ka 11.12.2011 13:19

спасибо всем большое!очень помогли:)
и не ссорьтесь)))

trikadin 11.12.2011 13:31

nekto_O, я имел в виду, что это не jQuery позволяет реализовывать цепочные вызовы, а сам язык. Про другие языки я вообще не слова не сказал. Думаю, спорить больше не о чем)

nekto_O 11.12.2011 14:49

Цитата:

Сообщение от ane4ka
и не ссорьтесь)))

да никто не ссорится, просто меня как программиста на C# возмутила эта фраза
Цитата:

Цепочки - это, блеать, особенность JS
тоесть отсюда следует что цепочки это оказывается особенность JS, а не ООП.

upd и вообще само определение "цепочки" бред...

trikadin 11.12.2011 14:58

nekto_O, вы меня неправильно поняли) Я не говорил, что JS уникален в этом роде. Я говорил о том, что это не заслуга jQuery, а возможность в JS.

Вы меня правда не понимаете?

nekto_O 11.12.2011 15:10

А кто говорил что это заслуга джейкуэри?
Это стиль кодинга в духе ООП-парадигмы так то. Я человеку указал что его код похож на код jQuery-юзера потому что там похожим(не совсем, но очень похожим) образом вешается обработчик на кнопку. А в ExtJS на кнопку обработчик вешается с помощью setHandler(), а не on();
И плюс ко всему в ExtJS4, именно в 4 нет метода findById.

trikadin 11.12.2011 15:13

nekto_O, у меня к вам нету больше никаких претензий)

devote 11.12.2011 16:36

Цитата:

Сообщение от nekto_O
Я человеку указал что его код похож на код jQuery-юзера потому что там похожим(не совсем, но очень похожим) образом вешается обработчик на кнопку. А в ExtJS на кнопку обработчик вешается с помощью setHandler(), а не on();

Бред! в джуквери нет, ни on() ни что-то либо что есть в коде автора. Это тоже похоже на джуквери?
elem.addEventListener('click', function(){
});
Или вы считаете что яваскрипт сделан по подобию джуквери?

trikadin 11.12.2011 16:42

Цитата:

Сообщение от devote
Бред! в джуквери нет, ни on() ни что-то либо что есть в коде автора. Это тоже похоже на джуквери?

Есть, вообще-то. Ссылка.

devote 11.12.2011 16:53

Цитата:

Сообщение от trikadin
Есть, вообще-то. Ссылка.

Ну значит я не знаю джуквери, но знаю что джуквери не предел джаваскрипта, и не джуквери породил джаваскрипт... Я пишу на чистом джаваскрипте, и так же применяю подобный стиль написания. Потому что таков джаваскрипт. да и как вижу этот on() ввели в джуквери 1.7 от того и не видел

trikadin 11.12.2011 16:59

Цитата:

Сообщение от devote
Ну значит я не знаю джуквери, но знаю что джуквери не предел джаваскрипта, и не джуквери породил джаваскрипт...

Так и я об этом...)

nekto_O 11.12.2011 17:27

Цитата:

Сообщение от devote
Бред! в джуквери нет, ни on() ни что-то либо что есть в коде автора

троль чтоле? Во-первых, джейкуэри, во-вторых, метод on() есть и в jQuery и в ExtJS, но в ExtJS его применение несколько иное.
Цитата:

Сообщение от devote
Или вы считаете что яваскрипт сделан по подобию джуквери?

где я об этом говорил?
Цитата:

Сообщение от devote
Ну значит я не знаю джуквери

Заметно, зачем тогда спорите? Вот я не знаю jQuery поскольку мне он не нужен. Однако это не означает что я не имел права предположить что в прототипе описанном в 1-м случае есть похожие конструкции.

devote 11.12.2011 17:34

Цитата:

Сообщение от nekto_O
троль чтоле? Во-первых, джейкуэри, во-вторых, метод on() есть и в jQuery и в ExtJS, но в ExtJS его применение несколько иное.

Если почитаешь топик выше, то можно понять что рассказывать о том что там есть а что там нет, нету смысла. А на все ваши джуквери и прочии либы мне плевать, они не умет того что умеет JavaScript.

Цитата:

Сообщение от nekto_O
где я об этом говорил?

Тыкая на ошибки ТС, вы четко упомянули джуквери. Что уже дает понять о том что вы считаете что яваскрипт это джуквери.

Цитата:

Сообщение от nekto_O
Заметно, зачем тогда спорите? Вот я не знаю jQuery поскольку мне он не нужен. Однако это не означает что я не имел права предположить что в прототипе описанном в 1-м случае есть похожие конструкции.

фразу "Ну значит я не знаю джуквери" я произнес с оттенком сарказма. Да я не осведомлен последними нововведениями джуквери, но знаю его насквозь от и до, так как в отличии от вас хомячков, я всегда сморю на внутренности того с чем работаю.

Цитата:

Сообщение от nekto_O
Однако это не означает что я не имел права предположить что в прототипе описанном в 1-м случае есть похожие конструкции.

У меня в моих библах, таких похожих конструкций, хоть попай ешь... дык что мне предполагать что все работают с моими библами чтоль?

nekto_O 11.12.2011 17:54

Цитата:

Сообщение от devote
А на все ваши джуквери и прочии либы мне плевать, они не умет того что умеет JavaScript.

Получается что применять библы совместно с JS нельзя? бред)))
Цитата:

Сообщение от devote
Тыкая на ошибки ТС, вы четко упомянули джуквери

Какие ошибки? Вы что пьяны? человек просто выразился не совсем корректно и меня это задело ибо я пишу на C# в основном.
Цитата:

Сообщение от devote
так как в отличии от вас хомячков, я всегда сморю на внутренности того с чем работаю.

рад за вас...
Цитата:

Сообщение от devote
У меня в моих библах, таких похожих конструкций, хоть попай ешь... дык что мне предполагать что все работают с моими библами чтоль?

такие конструкции не есть что-то особенное, поскольку любой при желании может расширить функционал чистого JS.

trikadin 11.12.2011 18:01

devote, пойду за попкорном. :D

devote 11.12.2011 18:31

Цитата:

Сообщение от nekto_O
Получается что применять библы совместно с JS нельзя? бред)))

Ты так и не понял? Я пытаюсь донести до тебя мысль о том что JavaScript не предел одного джуквери. я использую большую часть методов что юзает джуквери, или наоборот джуквери юзавет то что я юзаю.. Это кому как, но говорить о похожести конструкции джуквери глупо, ибо данную конструкцию придумал не джуквери. Он лишь использует то что придумано до него.

Цитата:

Сообщение от nekto_O
такие конструкции не есть что-то особенное, поскольку любой при желании может расширить функционал чистого JS.

А кто-то спорит чтоль!? Именно поэтому и нельзя считать это собственностью джуквери. Да и вообще если люди изучают джаваскрипт, то им вообще не надо говорить о джуквери и о подобных библах... Ибо зная библу, ты не узнаешь язык.

nekto_O 11.12.2011 19:12

Цитата:

Сообщение от devote
Я пытаюсь донести до тебя мысль о том что JavaScript не предел одного джуквери

О, наконец ты что-то толковое сказал :D (без обид). Ты посмотри где я это опровергал?
Скажу более, я чаще всего юзаю чистый JS (после C# конечно) по мере необходимости, но согласись писать какие-то эпичные прототипы на JS нет смысла если это уже написали/упростили в ФВ.
А jQuery я вообще уже не использую, потому что не считаю этот ФВ полноценным, вырос из него.
Цитата:

Сообщение от devote
Да и вообще если люди изучают джаваскрипт, то им вообще не надо говорить о джуквери и о подобных библах... Ибо зная библу, ты не узнаешь язык.

Автор темы не изучает чистый JS, читай внимательно. Естественно для изучения ФВ необходимо знать сам язык, это разве кем-то оспаривалось?

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

ane4ka 14.12.2011 19:18

Цитата:

Сообщение от Bkmz_1_ (Сообщение 141725)
Ну может как-то так:

new Ext.Window({
        title: 'Калькулятор',
        layout: 'fit',
        width: 700,
        height: 550,
        buttons: [{
           text: '1',
           handler: function(){
                 Ext.getCmp('id-field').setValue(+'1');
           },{
           text: '2',
           handler: function(){
                 Ext.getCmp('id-field').setValue(+'2');
           }
        }]
    });


И если вы только начали не учите 3-й. Учите 4-й ExtJS

когда я пытаюсь Ext.getCmp('id-field').setValue(+'+') то у меня в строке ввода выходит NaN.подскажите как можно решить эту проблему?а то я что-то сообразить не могу:(

nekto_O 14.12.2011 19:58

Цитата:

Сообщение от ane4ka
когда я пытаюсь Ext.getCmp('id-field').setValue(+'+') то у меня в строке ввода выходит NaN

Ну это логично. Смотрите мой пример на 1-й странице, если у вас ExtJS4 то работать будет.

ane4ka 14.12.2011 20:55

Цитата:

Сообщение от nekto_O (Сообщение 142890)
Ну это логично. Смотрите мой пример на 1-й странице, если у вас ExtJS4 то работать будет.

спасибо!очень помогли!

nekto_O 14.12.2011 21:10

Цитата:

Сообщение от ane4ka
дело в том что когда я использую ExtJS4,в браузере ничего не отражается

Создавать приложения на ExtJS < 4 уже не актуально. А если что-то не работает - значит вы что-то забыли сделать)
скачайте себе последнюю версию тут -> ссылка

ane4ka 14.12.2011 21:38

я уже решила эту проблему:) спасибо!


Часовой пояс GMT +3, время: 23:10.