2013-02-25 1 views
0

У меня есть компонент Ext.Audio внутри detailsCard из NestedList в приложении Sencha touch 2.1. Я не могу понять, как остановить аудиопоток, когда вы нажимаете кнопку «Назад» в подробной карточке. Я также не понимаю, как прослушать «событие нажатия кнопки« назад »только для кнопки« Назад »на подробной карточке. Вот мой код:Sencha touch NestedList: как остановить аудиоплеер при закрытии detailsCard

Ext.define('App.view.Lead', { 
extend: 'Ext.NestedList', 
xtype: 'lead', 
config: { 
    title: 'Lead', 
    iconCls:'lead', 
     store: 'LeadStore', 
    displayField: 'title', 
    detailCard: { html: 'details' } 
}, 
getDetailCard: function(node) { 
      if (node) { 
       return { 
        xtype: 'container', 
        layout: 'fit', 
        items: [ 
         { 
          xtype: 'panel', 
          layout:'fit', 
          html: node.get('text')  
         }, 
         {    
          xtype: 'audio', 
          docked: 'bottom', 
          url : node.get('audio'), 
          autoPause: true, 
         }, 
         ] 
       } 
      } 
    } 

});

Заранее спасибо

ответ

1

Вы можете дать вашей аудио в id конфигурации для справки:

{    
    xtype: 'audio', 
    docked: 'bottom', 
    url : node.get('audio'), 
    autoPause: true, 
    id: 'audio' 
} 

Для обработки кнопки назад можно использовать back событие вашего вложенного списка вместе с stop способом, чтобы остановить аудио :

back: function() { 
    Ext.getCmp('audio').stop(); 
} 

you'l быть безопасным, если вы используете itemId.

itemId: audio 

Затем вы можете использовать Ext.ComponentQuery для его получения:

Ext.ComponentQuery.query('#audio')[0].stop(); 
+0

Большое спасибо. Это работает, но я получаю следующее предупреждение: '[WARN] [Ext.Component # constructor] Регистрация компонента с уже используемым id ('audio'). Пожалуйста, убедитесь, что существующий компонент был уничтожен ('Ext.Component # destroy()'. ' Каждый раз (кроме первого) я открываю подробную карточку. Я пробовал следующее без успеха: ' var player = Ext.getCmp ('аудио'); \t \t если (() player.isPlaying) player.stop(); // следующий не решает проблемы, \t \t player.destroy(); ' – raimaj

+0

Пожалуйста, проверьте мой выбор :) – Eli

+0

Для по какой-то причине он не работает (и я не получаю никаких ошибок). Большое спасибо, в любом случае, я могу жить с этим предупреждением :) – raimaj