0

非表示にした後、クラス レベルで定義されたウィンドウを表示できません。必要に応じて、表示と非表示を使用する必要があります。

これが私がこれまでに試したことです:


isCapsLock Caps Lock のオン/オフ処理のためのユーティリティ関数:

function(e) {

    e = (e) ? e : window.event;

    var charCode = false;
    if (e.which) {
        charCode = e.which;
    } else if (e.keyCode) {
        charCode = e.keyCode;
    }

    var shifton = false;
    if (e.shiftKey) {
        shifton = e.shiftKey;
    } else if (e.modifiers) {
        shifton = !!(e.modifiers & 4);
    }

    if (charCode >= 97 && charCode <= 122 && shifton) {
        return true;
    }

    if (charCode >= 65 && charCode <= 90 && !shifton) {
        return true;
    }

    return false;

}


Ext.define('MyApp.controller.LoginController', {
    extend      : 'Ext.app.Controller',
    views       : [ 'notification.CapsLockNotification' ],
    refs            : [{
       ref      : 'capsLockNotification',
       selector: 'capslocknotification'
    }],
    init        : function() {
             this.capsLockNotification = Ext.widget('capslocknotification');
             this.control({
                  'loginform #password' : {
                      keypress    : this.handleCapsLock
                   }
                 // control logic goes here
             });
    },
    handleCapsLock : function(field, eOpts) {
        var win = this.getCapsLockNotification();
        if(ExtUtil.isCapsLock(eOpts)) {
            win.show();
        } else {
            win.hide();
        }
    }
});
4

1 に答える 1

0

セレクターが正しいコンポーネントを返しているかどうかを確認してください。変数 win をグローバルにします: handleCapsLock : function(field, eOpts) { win = this.getCapsLockNotification(); if(ExtUtil.isCapsLock(eOpts)) { win.show(); } 他の { win.hide(); そして、firefox で firebug コンソールを開くか、Chrome で開発者ツール コンソールを開き (どちらも CTRL + SHIFT + J を使用)、コンソールに次のように記述します。console.info(win.$className); are undefinedまたはnullではなく、クラス名が正しいかどうかを確認します

于 2012-11-12T20:26:26.247 に答える