2014-09-03 7 views
0

Dans l'application tactile sencha j'ai eu des vues, l'une d'entre elles contient une liste.Liste tactile Sencha itemtap after view change

Si je passe de la vue qui contient la liste à une autre vue et vice versa, l'événement itemtap de la liste ne se déclenche plus.

Mon point de vue avec la liste:

Ext.define('app.view.ItemList', { 
extend: 'Ext.navigation.View', 
xtype: 'listitems', 

config: { 
    title: 'List', 

    items: [ 
    { 
     xtype: 'toolbar', 
     ui: 'light', 
     docked: 'top', 
     title: 'List', 
     items: [ 
      { 
       xtype: 'button', 
       text: 'Back', 
       ui: 'back', 
       handler: function() { 

        Ext.Viewport.animateActiveItem({xtype:'main'}, {type:'slide'}); 
       } 
      }, 
     ] 
    }, 
    { 
     xtype: 'list', 
     itemTpl: '{"name"}', 
     store: { 
      autoLoad: true, 
      fields: ['name', 'email'], 
      proxy: { 
       type: 'rest', 
       url: 'data/data.json', 
       reader: { 
        type: 'json' 
       } 
      } 
     } 
    }] 
}, 
initialize: function() { 

    this.callParent(); 
} 
}) 

Controller pour cela:

Ext.define('app.controller.Main', { 
extend: 'Ext.app.Controller', 

config: { 
    refs: { 
     listitems: 'listitems' 
    }, 
    control: { 
     'listitems list': { 
      itemtap: 'showItem', 
     } 
    } 
}, 
showItem: function(list, index, element, record) { 

    this.getItemlist().push({ 

     xtype: 'panel', 
     title: record.get('name'), 
     html: [ 
      "<b>Name:</b> " + record.get('name') + 
      "<b>Email:</b> " + record.get('email') 
     ], 
     scrollable: true, 
     styleHtmlContent: true 
    }) 
} 
}) 

je l'ai essayé aussi avec id, itemId, rien ne fonctionnait.

Comment pourrais-je résoudre ce problème?

+0

Etes-vous sûr que l'événement de prise ne se déclenche pas à nouveau? Que contient votre fonction 'showItem', j'espère que c'est juste comme' console.log ('tapé') '? – Alexander

+0

Quelle version de ST utilisez-vous, et pourriez-vous mettre un exemple minimal dans "sencha fiddle"? – Alexander

+0

Vous avez eu le point, j'ai vérifié dans la console et il se déclenche à chaque fois que le problème était avec la fonction showItem. J'ai mis à jour la question pour montrer la fonction. – endlessC

Répondre

0

S'il vous plaît essayer STH comme ceci:

this.getItemlist().push(
    Ext.create('Ext.panel.Panel,{ 
     title: record.get('name'), 
     html: [ 
      "<b>Name:</b> " + record.get('name') + 
      "<b>Email:</b> " + record.get('email') 
     ], 
     scrollable: true, 
     styleHtmlContent: true 
    }) 
) 

et ne pas oublier d'utiliser getItemlist().pop() lorsque le bouton retour est cliqué! Dans mon application, le bouton de retour n'a pas (ou pas toujours) enlevé la vue sur le dessus de la pile. Cela devient encore pire lors de l'ajout de loadmasks et de ActionSheets.

+0

Fondamentalement, j'ai construit exactement la même chose ici http://vimeo.com/37974749, puis j'ai ajouté un simple bouton pour pour ce faire: 'Ext.Viewport.animateActiveItem ({xtype: 'main'}, {type: 'slide'});', mais quand je repasse de cette à la vue de la liste et cliquez sur l'événement de robinet déclenche, mais pas charger l'article – endlessC