2010-11-30 3 views
2

Я внимательно слежу за кодом в пределах GeoCongress.us App, так как это мое первое приложение Sencha Touch, и предпосылка, лежащая в основе функциональности макета приложения, похожа на то, что я надеюсь достичь.Sencha Touch: List ItemTap Event Firing

У меня возникла проблема с получением объекта List для ответа на событие itemtap. Мое намерение состоит в том, чтобы зафиксировать событие itemtap на уровне SetsScreen, запустить мое собственное событие, которое будет прослушивать мой объект App, и App может обрабатывать процесс отображения новой карты (на основе элемента, постученного).

Во-первых, SetsScreen объект (соответствующие ее части, по крайней мере):

DataSets.views.SetsScreen = Ext.extend(Ext.Panel, { 
    cls: 'sets-screen', 
    layout: 'card', 

    initComponent: function() { 
     // Build the main content list and add it to the main scren 
     this.setsList = new DataSets.views.SetsList({ 
      scroll: false 
     }); 
     this.setsList.on('itemtap', this.onListItemTap, this); 

     this.main = new Ext.Container({ 
      scroll: true, 
      items: [this.setsList] 
     }); 

     this.items = [this.main]; 
     DataSets.views.SetsScreen.superclass.initComponent.call(this); 
    }, 

    onListItemTap: function(dv, index, item, e) { 
     alert('Test'); 
    } 
}); 

Здесь пока мой SetsList объект (на самом деле ничего удивительно здесь):

DataSets.views.SetsList = Ext.extend(Ext.List, { 
    itemSelector: '.sets-list-item', 
    singleSelect: true, 

    initComponent: function() { 
     this.store = DataSets.stores.Sets; 
     this.itemTpl = Ext.XTemplate.from('sets-list'); 

     DataSets.views.SetsList.superclass.initComponent.call(this); 
    } 
}); 

И Sets объект ничего больше, чем быстрая модель данных и внешний вид.

Ext.regModel('Sets', { 
    idProperty: 'id', 
    fields: [ 
     'title', 
     'last_updated', 
     'current_value' 
    ] 
}); 

DataSets.stores.Sets = new Ext.data.Store({ 
    model: 'Sets', 
    data: [ 
     {id: 0, title: 'Weight', last_updated: new Date('11/28/2010 00:00:00 AM GMT-0600'), current_value: 145}, 
     {id: 1, title: 'Cups of Coffee', last_updated: new Date('11/28/2010 07:00:00 AM GMT-0600'), current_value: 1} 
    ] 
}); 

ответ

1

О, человек - я не знаю, как я наткнулся на этот ответ, очень неясная опечатка была единственной вещью, которая мешала этому работать.

Ext.List() использует свойство itemSelector, чтобы определить, какой элемент подходит для «крана». Мой itemSelector был установлен в .sets-list-item, но шаблон был <div class="set-list-item">. Исправление шаблона и itemtap срабатывает, как ожидалось.

0

Возможно, вам стоит посмотреть на updated screencast - поскольку некоторые из API, измененные в версии 1.0, и более старый screencast теперь не синхронизированы.

+0

Никогда даже не видел скринкасты - спасибо за ссылку! Это относится к GeoTweets (а не к GeoCongress, из которого я использую, чтобы учиться), но я все равно буду следить за ним. Тем не менее, я ссылаюсь на действительную документацию 1.0 API и ничего не выделяется. – 2010-11-30 01:37:24

Смежные вопросы