在ExtJS中引用被调用类中的调用者类

时间:2013-01-04 22:28:47

标签: javascript extjs

我是ExtJS的新手并遇到以下问题:我有一个类LoginWindow,它实现了一个FormPanel:

Ext.define('WebDesktop.LoginWindow', {
  extend: 'Ext.window.Window',

  title: Translator.get("login_window:Anmeldung"),
  layout: 'fit',
  closable: false,
  resizable: false,

  constructor: function() {
    this.callParent();
  },

  initComponent: function () {
    var me = this;

    me.loginPanel = new WebDesktop.LoginPanel(me);

    me.items = [
        me.loginPanel
    ],

    me.callParent();
  },
});

Ext.define('WebDesktop.LoginPanel', {
  extend: 'Ext.form.Panel',

  header: false,
  bodyPadding: 5,
  reset: true,

  waitMsgTarget: true,
  url: Routing.generate('_route_core_login'),

  items: [{
    xtype: 'textfield',
    fieldLabel: Translator.get("login_window:Benutzername"),
    name: '_username',
    width: 300,
  },
  {
    xtype: 'textfield',
    fieldLabel: Translator.get("login_window:Passwort"),
    name: '_password',
    inputType: 'password',
    width: 300,
  }],

  buttons: [{
    text: Translator.get("login_window:Anmelden"),
    handler:  function() {

        var form = this.up('form').getForm();

        if (form.isValid()) {
            // Submit the Ajax request and handle the response
            form.submit({
                success: /* Call a function that is defined in main application class */,
                failure: function(form, action) {

                    Ext.Msg.show({
                        title: Translator.get("login_window:Benutzeranmeldung"), 
                        msg: action.result ? action.result.message : 'No response',
                        buttons: Ext.Msg.OK,
                        icon: Ext.Msg.ERROR
                    });

                    form.reset();
                }
            });
        }
    }
  }],
});

现在在我的主应用程序类中,我创建了一个LoginWindow实例并将其显示给用户。此主类中还有一个定义的函数,应在成功提交登录窗口的形式时调用。但我不知道如何引用该功能。我试图将调用者类的引用传递给被调用的类并将其保存在那里,但这不起作用。正如您所看到的,我没有使用MVC架构,我知道这不是最佳实践......

1 个答案:

答案 0 :(得分:1)

me.loginPanel = new WebDesktop.LoginPanel();
me.loginPanel.referenceToParentWindow = me;

这是你要找的?我很困惑。