0

ExtJS は初めてで、次の問題があります。FormPanel を実装するクラス LoginWindow が 1 つあります。

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 アーキテクチャを扱っていません。ベスト プラクティスではないことはわかっています...

4

1 に答える 1

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

これはあなたが探しているものですか?私は非常に混乱しています。

于 2013-01-04T22:41:06.517 に答える