2012-01-25 3 views
0

Я пытаюсь запустить пользовательское событие в сенчане, и, похоже, он добавляется к событиям, которые могут быть запущены, и, похоже, он срабатывает, но мой слушатель делает это похоже, не реагируют на это событие.Не может реагировать на пожар событий в sencha touch

событие instantinated здесь, где это форма тела:

Ext.apply(this, { 
     scroll: 'vertical', 
     dockedItems: [ titlebar, buttonbar ], 
     items: [ fields ], 
     listeners: { 
      beforeactivate: function() { 
       var saveButton = this.down('#userFormSaveButton'); 
        saveButton.setText('Submit'); 
        this.addEvents('cityUpdate'); 
        console.log('event added'); 

      }, 
      deactivate: function() { 
       this.resetForm(); 
      } 
     } 
    }); 

Событие обжигают здесь:

if (result.data != 'false' && result.data.state) { 
     Ext.getCmp("usersForm").fireEvent('cityUpdate', result.data.towns); 
     console.log('event fired'); 
     alert('Your town is ' + result.data.towns + ' ' + result.data.state.replace(/\+/g , ' ')); 

    } 

Тогда слушатель применяется к полю в форме здесь :

   { 
       xtype: 'textfield', 
       name: 'city', 
       label: 'City*', 
       placeHolder: 'New York', 
       useClearIcon: true, 
       id:'city', 
       listeners: { 
        cityUpdate: function(city) { 
         console.log('event reponse' , this.fieldEl.dom , city); 
        } 
       } 
      }, 

Может кто-нибудь объяснить мне, почему я не могу видеть ответ от ответа на событие в c onsole? Я вижу, что событие добавлено и событие запущено, но я никогда, кажется, не получаю событие, чтобы фактически запускать консольный оператор ответа. Я не получаю никаких ошибок в консоли, поэтому я немного теряю информацию о том, что здесь происходит?

+0

Попробуйте выполнить 'console.log (Ext.getCmp (" usersForm "))' Посмотрите, что отображается – mowwwalker

ответ

2

Похоже, что форма запускает событие, но вы добавили слушателя в текстовое поле, которое находится на форме.

Если usersForm - это тот, который вызывает fireEvent, то слушатель для этого события должен находиться на самой пользовательской форме.

Что произойдет, если вы добавите обработчик cityUpdate в первый фрагмент кода, в том же блоке, что и beforeactivate, и deactivate? Означает ли это событие? Если да, разве вы не ожидали, что его поймают? Если это так, может быть небольшая проблема дизайна.

+0

УДАЛЕНИЕ события на том же элементе, который я его слушал, исправил эту проблему. Спасибо! Мое предположение заключалось в том, что вы можете установить универсальные слушатели, как в Mootools, и заставить их прослушивать огонь по событию, а затем выполнить их код соответствующим образом – Xenology

Смежные вопросы