2014-01-28 86 views
0

在我的SenchaTouch 2.3.1應用程序中,我爲用戶構建了一個登錄面板。它看起來像這樣:控制器引用不起作用

Ext.define('MyApp.view.LoginPanel', { 
extend: 'Ext.form.Panel', 
alias: 'widget.loginPanel', 

requires: [ 
    'Ext.form.FieldSet', 
    'Ext.field.Password', 
    'Ext.Button' 
], 

config: { 
    layout: 'vbox', 
    items: [ 
     { 
      xtype: 'fieldset', 
      title: 'Business Login', 
      itemId: 'login', 
      items: [ 
       { 
        xtype: 'emailfield', 
        itemId: 'email', 
        label: 'E-Mail', 
        name: 'email', 
        required: true 
       }, 
       { 
        xtype: 'passwordfield', 
        itemId: 'password', 
        label: 'Passwort', 
        name: 'password', 
        required: true 
       } 
      ] 
     }, 
     { 
      xtype: 'button', 
      itemId: 'loginButton', 
      cls: 'button-blue', 
      text: 'Login' 
     }, 
     { 
      xtype: 'panel', 
      itemId: 'loggedInPanel', 
      cls: 'logged-in-panel', 
      tpl: [ 
       'Sie sind eingeloggt als {firstname} {lastname} (ID: {agentId})' 
      ], 
      hidden: true, 
      margin: '10 0' 
     } 
    ] 
} 

});

在我的控制,我想用這樣來此面板的引用:

config: { 
    refs: { 
     loginPanel: 'loginPanel', 
     navigationView: '#morenavigation', 
     loggedInPanel: '#loggedInPanel', 
     loginButton: '#loginButton' 
    } 
} 

在控制器的發射功能,我要檢查,如果用戶已經登錄,以顯示他的身份證和顯示一個註銷按鈕。但是當我嘗試獲得面板ref時,它是未定義的。但爲什麼?

launch: function() { 
    var me = this, 
     sessionInfo = Ext.getStore('SessionInfo'); 

    console.log(me.getLoginPanel()); <-- undefined 

    if (null !== sessionInfo.getAt(0).get('sessionId')) { 
     me.successfullLogin(sessionInfo.getAt(0).get('sessionId')); 
    } 
} 

回答

0

使用ref在我的例子是正確的方法:

refs: { 
    loginPanel: { 
     autoCreate: true, 
     forceCreate: true, 
     xtype: 'loginPanel' 
    } 
} 
1

實際上是否創建了視圖的實例?

在您的應用程序的launch方法中,您可能需要創建一個實例,然後將您的視圖配置爲fullscreen: true,或將其添加到視口。 Sencha Touch API文檔Ext.app.Application上的示例具有從應用程序的啓動功能創建的主視圖。

+0

這個答案給我帶來了使用ref的正確途徑。非常感謝你!您可以使用autoCreate和forceCreate選項在控制器中使用高級參考。請參閱:[Sencha文檔](http://docs.sencha.com/touch/2.3.1/#!/guide/controllers-section-refs-and-control) – mAtZ