2012-04-12 6 views
0

Je suis nouveau à Sencha Touch 2 et j'ai des questions concernant la navigation entre les vues. Quelle est la meilleure façon de naviguer entre différentes vues? J'ai essayé d'utiliser la classe NavigationView fournie, mais elle n'offre pas toutes les fonctionnalités que je veux.ST2 navigation entre les vues

Actuellement, j'utilise un simple Ext.Container comme Viewport pour mon application. Je déclarai refs pour les vues et quand je change une nouvelle vue dans mon controller je fais actuellement comme ceci:

var oldView = this.getOldView(); 
Ext.destroy(oldView); 

var newView = Ext.create('MyApp.view.MyView'); 
Ext.Viewport.add(newView); 

Mais je ne sais pas si cela est la bonne approche et trouver Documenation bon couldnt . Actuellement, il me semble que le controller perd la trace du refs lorsque je détruis manuellement les vues. Alors, quelle est la meilleure façon de naviguer entre les vues (similaire à push() de NavigationView et pop())? Dois-je détruire l'ancienne vue et ajouter une nouvelle vue? Ou est-ce que je cache juste l'ancienne vue et ajoute la nouvelle vue?

Répondre

0

Si vous souhaitez personnaliser vos vues aussi librement que vous le souhaitez, Ext.NavigationView n'est PAS recommandé. Utilisez plutôt des types de base, tels que: Ext.Container (recommandé), Ext.Panel, etc.

refs fonctionne encore chaque fois que vous ajoutez ou détruire à nouveau votre point de vue, à condition que votre composant est disponible.

Mais en tant que débutant, une approche simple (mais pas optimale pour la performance) Je pourrais vous suggérer de créer tous vos composants nécessaires, et simplement les activer/désactiver si nécessaire.

Si vous souhaitez activer une vue, vous devez d'abord localiser le parent de cette vue. Par exemple, vous avez un Ext.Container qui a trois panneaux. Ensuite, si vous voulez activer le deuxième panneau de ce conteneur, utilisez setActiveItem(yourContainerRef, 1) (sans animation) ou animateActiveItem(yourContainerRef, 1, {type: 'slide'})

+1

Merci pour la clarification. – dp1000