Je programme une application Sencha Touch avec une composition modérément complexe de Ext.TabBar
avec Ext.Panel
à l'intérieur.Ext.layout.CardLayout nécessite le plein écran?
Mais mon Ext.Panel
en utilisant Ext.layout.CardLayout
fonctionne dans un mystérieux problème quand ne pas avoir une propriété fullscreen: true
définie sur: il jette un TypeError: Object card has no method 'setActiveItem'
quand je tente d'appeler la méthode de .setActiveItem()
panel
ce qu'il n'a pas dans ma preuve de concept version qui avait fullscreen: true
activée.
Je peux reproduire le problème sur la console de Chrome sur une page avec la bibliothèque Sencha tactile chargée comme ceci:
> var p1 = new Ext.Panel({layout:'card', items:[{html:'a'},{html:'b'}]})
undefined
> p1.setActiveItem(0)
TypeError: Object card has no method 'setActiveItem'
Et il ne se produit pas avec la propriété .fullscreen
:
> var p2 = new Ext.Panel({fullscreen: true,
layout:'card',
items:[{html:'a'},{html:'b'}]})
undefined
> p2.setActiveItem(0)
subclass
Qu'est-ce que donne?
info Version: J'utilise Sencha touch 1.0.1a
Update 1 (3 janv, 10.30UTC ~ + 1h), pas à pas autour avec le débogueur et découvrir des choses:
Le simple paramétrage layout: 'card'
ne déclenche pas la création d'un objet réel Ext.layout.CardLayout
en cours de création. Puisque .setActiveItem()
essaie de déléguer à la propriété .layout
du compent, il échouera presque instantanément. Cependant, la mise en .layout
à une nouvelle Ext.layout.CardLayout
provoque plus de problèmes en bas de la ligne ..
Mise à jour 2: (3 janvier ~ 12: 25UTC + 1h) Tout se résume à divers composants objets non être rendus/insérés dans la dépendance suffisante pour être prêt à rendre. J'ai réussi à faire fonctionner mon code en ajoutant des écouteurs, d'abord un écouteur pour l'événement added
dans le panneau qui contient un this.setLayout(new Ext.layout.CardLayout());
, puis un écouteur afterrender
sur le composant ajouté qui appelle finalement .setActiveItem()
pour passer à la carte désirée.
Merci! J'ai eu le même problème après avoir essayé d'emballer mon TabPanel principal dans une disposition de carte afin que je puisse commuter des détails intérieurs supplémentaires. L'utilisation de votre 2ème mise à jour dans mon app.js m'a aidé à résoudre le problème. – rmoore
Heureux que ça a aidé! Cela me déroutait beaucoup, ce problème. –