0

隐藏后,我无法显示定义类级别的窗口。我需要在必要时使用显示和隐藏它。

这是我到目前为止所尝试的:


isCapsLock实用程序功能,用于大写锁定开/关处理:

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

检查选择器是否返回正确的组件。使 var 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); console.info(win.$className); 检查 arenot undefinednull以及类名是否正确

于 2012-11-12T20:26:26.247 回答