Я хотел бы начать быстро.
В чем моя проблема:
В ST2 я структурировал свое приложение по шаблону MVC. У меня есть магазин, модель, контроллер и представления (для получения дополнительной информации прокрутите вниз).
Рабочий процесс:
- Я щелкаю элемент списка (
List View
со списком элементов из магазина)
- Контроллер действует для события 'itemtap'
- Функция контроллера ищет основной вид и выдвигает подробный вид
- Данные записи будут установлены как данные
- Подробное представление использует
.tpl
для генерации вывода и использует данные
Задача
Теперь я хочу добавить кнопку или ссылку, чтобы включить поддержку аудио.
Я подумал о функции JavaScript, которая использует метод Media из Phonegap для воспроизведения аудио
и я хочу динамически добавлять эту функциональность в моем подробном представлении.
Ты хоть представляешь, как я могу добиться такого поведения? Я ищу типичное решение "сенча", если оно есть.
Подробный обзор всех файлов начинается здесь
В моем списке отображаются некоторые данные, а в подробном представлении отображается дополнительная информация для выбранной записи.
Список и подробный вид, собранные в контейнере, я дам вам обзор:
Контейнер:
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'
}
});
Детальный просмотр
Ext.define('MyApp.view.ArtistDetail', {
extend: 'Ext.Panel',
xtype: 'artistdetail',
config: {
styleHtmlContent: true,
scrollable: 'vertical',
title: 'Details',
tpl: '<h2>{ title }</h2>'+
'<p>{ artist }, { created }</p>'+
'<a href="#">{ audio }</a>'+
'',
items: [
//button
{
xtype: 'button',
text: 'back',
iconCls: 'arrow_left',
iconMask: true,
handler: function() {
var elem = Ext.getCmp("artistcontainer");
elem.pop();
}
}
]
}
});
И, наконец, контроллер
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()
});
}
});
Пух, много чего почитать