Ext.form.field.Text событие в controller
ExtJS 6 ругается на xtype: "trigger", мол уже устарел и используйте вот это:
Ext.create('Ext.form.field.Text', {
triggers: {
foo: {
cls: 'my-foo-trigger'
}
},
fieldLabel: "xxx", name: 'yyy,
itemId: "ValueXXX",
onTriggerClick: function (e) { this.fireEvent("ontriggerclick", this, event); }
})
Раньше в контроллере, для xtype: "trigger", ловил событие по itemId и onTriggerClick так:
init: function () {
this.control({
'viewXXX #ValueXXX': { "ontriggerclick": this.onMyFunction },
});
},
onMyFunction : function (...) {
}
А теперь не срабатывает перехват событий. Может кто в курсе как перехватить событие для Ext.form.field.Text (cls: 'my-foo-trigger') ??? |
Надо было в handler добавить fireEvent
View:
triggers: {
foo: {
cls: 'my-foo-trigger',
handler: function () {
console.log('foo');
this.fireEvent("ontriggerclick", this, event);
},
}
}
Controller:
init: function () {
this.control({
'viewSysDirConstantsEditDir #SysDirConstantsValue': { "ontriggerclick": this.onTriggerGroupSubNameClick },
});
},
|
Рекомендую оставить прежние контроллеры для общесистемных действий и перейти на ViewController. Такие контроллеры создаются и уничтожаются вместе с представлениями.
Тогда достаточно написать: View (определение поля в форме)
{
xtype: 'textfield',
reference: 'my-textfield',
triggers: {
foo: {
cls: 'my-foo-trigger',
handler: 'onTriggerClick'
}
}
}
документация ViewController
{
extend: 'Ext.app.ViewController',
onTriggerClick: function() {
var view = this.getView();
var myTextField = this.lookupReference('my-textfield');
}
}
|
| Часовой пояс GMT +3, время: 03:57. |