2014-01-28 3 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

Правильный способ использования реф в моем примере будет:

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

Действительно ли что-то действительно создает экземпляр вашего вида?

В вашем методе launch вашего приложения вам, вероятно, придется создать экземпляр, а затем либо дать ваше представление конфигурации fullscreen: true, либо добавить его в окно просмотра. Примеры документов Sencha Touch API для Ext.app.Application имеют основной вид, создаваемый из функции запуска приложения.

+0

Этот ответ привел меня на правильный путь использования реф. Большое спасибо! Вы можете использовать расширенные ссылки в контроллере с параметрами autoCreate и forceCreate. См .: [Sencha Docs] (http://docs.sencha.com/touch/2.3.1/#!/guide/controllers-section-refs-and-control) – mAtZ

Смежные вопросы