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