2016-01-11 4 views
-2

Я хочу расширить расширение от сборщика Extjs. Я хочу, чтобы пользователь вводил текст в сборщике, вызывал функцию. Я использую событие change, оно не работает.Как получить событие изменения в сборщике текстовых полей extjs

Я хочу расширить расширение, например combobox. Когда вы вводите текст, он фильтрует записи.

Как его реализовать?

+0

Можете ли вы показать мне, где вы добавили слушателя 'change'? –

ответ

0

Rewrite onChange свойство в расширении, как это:

onChange: function() { 
      // Your logic 
      console.log('Changed!'); 

      // Call parent method onChange(), if needed 
      this.callParent(); 
} 

создать простую скрипку, чтобы проиллюстрировать, как это работает - onChange() method fiddle

+0

Это не работает –

+0

Я создаю скрипку для вас и добавлю ее в свой ответ, проверьте ее. Если я понимаю вашу проблему неправильно - не стесняйтесь развиваться и показывать, что именно вам нужно. –

0

Добавить «изменить» слушатель в подборщика (это может быть выпадающий, выбор даты, и т.д ...)

Вот пример:

var comboName = new Ext.form.field.ComboBox({ 
    fieldLabel: 'Name', 
    editable: true, 
    listeners: { 
    'change': function (this, newValue, oldValue) { 
    DoSomething(); 
    } 
    } 
}); 

Предыдущий код вызовет функцию DoSomething() каждый раз, когда вы измените значение.

+0

Не работает –

0

Если расширенный Ext.form.field.Picker класс, 'изменение' событие должно быть обработано так:

Ext.define('Your.extended.ClassName', { 
    extend: 'Ext.form.field.Picker', 

    ... 

    onChange: function(newVal, oldVal) { 
     .... 
     this.callParent(arguments); 
    } 

}); 
+0

Не работает –

0

Попробуйте

Ext.define('MyExtension', { 
    extend: 'Ext.form.field.Picker', 

    // config... 

    listeners: { 
     change: { 
      fn: function (picker, newValue, oldValue, eOpts) { 
       // your code here 
      } 
     } 
    } 
}); 

Вы можете также обратиться к функции в вашем ViewController (Extjs5/6)

listeners: { 
     change: { 
      fn: 'myViewControllerFunction' 
    } 

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