Sencha Touch 2 MVC - comment changer de vue avec le bouton
J'ai ce contrôleur:
Ext.define('MyApp.controller.Test', {
extend: 'Ext.app.Controller',
config: {
},
refs: [
{
ref: 'first',
selector: '#first'
},
{
ref: 'second',
selector: '#second'
}
],
views : [
'TestMain',
'TestSecond'
],
init: function() {
this.getTestMainView().create();
this.control({
'#first': {
tap: function() {
//how do I go to second view here?
}
},
'#second': {
tap: function() {
}
}
});
}
});
et ces 2 points de vue:
Ext.define('MyApp.view.TestMain', {
extend: 'Ext.Container',
xtype: 'testmain',
config: {
fullscreen: true,
layout: 'vbox',
scrollable: true,
items: [
{
xtype: 'button',
ui: 'normal',
id: 'first',
text: 'Go To Second Screen',
handler: function() {
//how do I go to second view here?
}
}
]
}
});
...
Ext.define('MyApp.view.TestSecond', {
extend: 'Ext.Container',
xtype: 'testsecond',
config: {
fullscreen: true,
layout: 'vbox',
scrollable: true,
items: [
{
xtype: 'button',
ui: 'normal',
id: 'second',
text: 'Go To First Screen',
handler: function() {
}
}
]
}
});
Je voudrais le second point de vue de la charge quand je clique sur le premier bouton et vice versa quand je clique sur le deuxième bouton. Il semble que je peux ajouter du code dans mon gestionnaire de bouton ou dans la section de contrôle - j'apprécierais un exemple à la fois (sauf s'ils sont les mêmes) et peut-être une explication des raisons pour lesquelles la méthode est la meilleure et pourquoi.
Noter que je ne veux PAS utiliser de carte de mise en page ou tabpanel - je veux savoir comment passer de l'un autonome de vue à l'autre (Dans mon application j'ai un panneau de carte et un onglet pabel et j'ai besoin de basculer entre les deux groupes à l'aide des boutons)
Merci!!
OriginalL'auteur cyberwombat | 2011-10-24
Vous devez vous connecter pour publier un commentaire.
Au lieu de gestionnaires, vous devez utiliser
this.control
dans le contrôleur:(vous pouvez déposer le
handlers:
à partir du bouton dans la définition de la vue)Aussi, vous ne devriez probablement pas de code id dans la première place.
Ma façon de gérer les boutons de ce genre est:
Puis dans un contrôleur de base qui s'applique à tous les points de vue, je fais quelque chose comme:
Je crois que pour obtenir l'accès à la 'go' paramètre que c'est en fait: btn.config.aller (au moins pour moi avec ST 2.0.1)
c'était une version antérieure. Comme pour ST 2.0.1, vous pouvez créer une sous-classe de bouton, jeu de "go" comme une option de configuration, et il suffit d'utiliser .getGo() sur le bouton, comme avec toutes les autres options de configuration.
OriginalL'auteur Attila O.
Excellente réponse, mais méfiez-vous que l'appel à setActiveItem() avec juste un xtype permettra de créer de nouveaux points de vue au lieu de réutiliser ceux qui sont déjà créés, j'ai fini par utiliser
Ext.ComponentQuery
pour obtenir la cible d'abord et ensuite setActiveItem sur ce, voici le code:Également noter que j'utilise un custom fenêtre pour ajouter une diapositive effets et tels, mais en l'appelant directement
Ext.Viewport.setActiveItem()
comme l'exemple précédent fonctionnera aussi bien.sont ces sources publiquement disponibles?? J'aimerais prendre un coup d'oeil, car il n'y a pas beaucoup de documentation sur ST2 encore.. je me demande encore si c'est vraiment mieux pour détruire/créer à chaque fois plutôt que de créer une fois et resuse..
seconde. Il serait vraiment utile que si on avait une vraie application pour disséquer
OriginalL'auteur Roberto
Nous devons d'abord vérifier si cette xtype est déjà créé ou non. Code suivant ne sera que
OriginalL'auteur Tahir Rauf
Cela a fonctionné pour moi:
OriginalL'auteur JJ_Coder4Hire