2013-01-04 20 views
0

我新的ExtJS的,並有以下問題:我有一個一流的登錄窗口,實現FormPanel中:在我的主應用程序類引用調用者類稱爲類在ExtJS的

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架構,我知道這不是最佳實踐...

+0

爲什麼不使用最佳實踐? – dbrin

+0

我還沒有找到一個例子說明如何以令人滿意的方式使用控制器 –

+0

這個怎麼樣? http://docs.sencha.com/ext-js/4-1/#!/guide/application_architecture – dbrin

回答

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

這是你在找什麼?我很困擾。

+0

我試過這個,但是如果我嘗試在LoginPanel類中訪問這個引用,它是undefined –

+0

這個怎麼樣? ('窗口');那對你有用嗎? – dbrin

+0

我玩了一下,似乎現在工作,所以謝謝 –