Sencha Touch 2:数据初始化或如何在Sencha和javascript之间共享动态信息

Sencha Touch 2:数据初始化或如何在Sencha和javascript之间共享动态信息,javascript,model-view-controller,cordova,sencha-touch,sencha-touch-2,Javascript,Model View Controller,Cordova,Sencha Touch,Sencha Touch 2,我想快点开始。 我的问题是: 在ST2中,我用MVC模式构建了我的应用程序。我有一个商店,一个模型,一个控制器和视图(更多信息请向下滚动) 工作流程: 我单击列表项(列表视图,其中包含存储区中的元素列表) 控制器为事件“itemtap”执行操作 控制器功能正在查找主视图并推送详细视图 记录数据将被设置为数据 详细视图使用.tpl生成输出并使用数据 问题 现在我想添加一个按钮或链接来启用音频支持。 我想到了一个javascript函数,它使用Phonegap中的媒体方法来播放音频 我想在我的详

我想快点开始。 我的问题是: 在ST2中,我用MVC模式构建了我的应用程序。我有一个商店,一个模型,一个控制器和视图(更多信息请向下滚动)

工作流程:

  • 我单击列表项(
    列表视图
    ,其中包含存储区中的元素列表)
  • 控制器为事件“itemtap”执行操作
  • 控制器功能正在查找主视图并推送详细视图
  • 记录数据将被设置为数据
  • 详细视图使用
    .tpl
    生成输出并使用数据
问题 现在我想添加一个按钮或链接来启用音频支持。 我想到了一个javascript函数,它使用Phonegap中的媒体方法来播放音频 我想在我的详细视图中动态添加此功能

你知道我怎样才能做到吗?我正在寻找一个典型的“sencha”解决方案,如果有的话

所有文件的详细概述从这里开始

“我的列表”显示了一些数据,并显示了一个详细视图,显示了所选记录的进一步信息。 列表和详细视图收集在一个容器中,我将向您概述:

容器:

Ext.define('MyApp.view.ArtistContainer', {
  extend: 'Ext.navigation.View', 
  xtype: 'artistcontainer', 
  layout: 'card',
  requires: [
    'MyApp.view.ArtistList',
    'MyApp.view.ArtistDetail'
  ],

  config: {
    id: 'artistcontainer',
    navigationBar: false,
    items: [{
        xtype: 'artistlist'
    }]}
});
列表

Ext.define('MyApp.view.ArtistList', {
  extend: 'Ext.List',
  xtype: 'artistlist', 

  requires: [
    'MyApp.store.ArtistStore'
  ],
  config: {
    xtype: 'list',
    itemTpl: [
        '<div>{artist}, {created}</div>'
    ],
    store: 'ArtistStoreList'
  }
});
Puh,有很多东西要读

您可以看到一个示例,说明如何使用Sencha Touch“audio”组件从外部url加载音频。我没用过,但我认为它适合你的需要。声明它如下所示:

var audioBase = {
        xtype: 'audio',
        url  : 'crash.mp3',
        loop : true
    };

我将重用该组件,并通过动态设置url加载歌曲或声音项。顺便说一句,我在Chrome和Ipad2上试用过,效果很好,但在HTC Desire Android 2.2默认浏览器上失败。

我不确定您是否需要所有这些细节。我仍然不明白你真正想要的是什么:当点击链接时你需要播放音乐文件吗?我正试图在点击按钮或链接时播放音乐。但是音乐数据文件是动态的。我考虑只添加对javascript函数的引用,并在参数中添加文件名。javascript函数将处理所有音乐内容。
Ext.define('MyApp.controller.Main', {
  extend: 'Ext.app.Controller',

  config: {
    refs: {
        artistContainer: 'artistcontainer', 
    },
    control: {
        'artistlist': {
            itemtap: 'showDetailItem'
        }
    }
  },

  showDetailItem: function(list, number, item, record) {
    this.getArtistContainer().push({
        xtype: 'artistdetail',
        data: record.getData()
    });
  }
}); 
var audioBase = {
        xtype: 'audio',
        url  : 'crash.mp3',
        loop : true
    };