Показать сообщение отдельно
  #13 (permalink)  
Старый 20.04.2015, 10:55
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Ура, нашел способ без грязных методов.

Вот код:

https://fiddle.sencha.com/#fiddle/lgs

console.clear();

Ext.FocusManager.enable(true);

Ext.define("MyComponent", {
    extend: "Ext.Component",
    
    focusable: true,
    
    initFocusable: function() {
        var me = this;
        
        me.on("render", function() {
            Ext.override(this.getEl(), {
                focus: function() {
                    this.callParent(arguments);
                    me.onFocus();
                },
                blur: function() {
                    this.callParent(arguments);
                    me.onBlur();
                }
            });
        });
        
    }
    
});

var comp = Ext.create("MyComponent", {
    renderTo: Ext.getBody(),
    html: "Тестовый компонент"
});

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

comp.on("focus", function() {
    console.log("FOCUS");
});

comp.on("blur", function() {
    console.log("BLUR");
});

comp.focus();
comp.blur();


Здесь я внедрил в элемент компонента недостающий функционал, а именно вызовы методов me.onFocus() и me.onBlur() и все заработало без всяких левых тегов типа инпута.

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