2

我正在密切关注GeoCongress.us 应用程序中的代码,因为这是我的第一个 Sencha Touch 应用程序,并且该应用程序的布局功能背后的前提与我希望实现的类似。

我在获取 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.data.Store:

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}
    ]
});
4

2 回答 2

1

哦,伙计 - 我不知道我是如何偶然发现这个答案的,一个非常模糊的错字是唯一阻止它工作的东西。

Ext.List()使用它的itemSelector属性来确定符合“点击”条件的元素。我itemSelector的设置为.sets-list-item但模板有<div class="set-list-item">. 更正模板并按itemtap预期触发。

于 2010-11-30T02:44:20.187 回答
0

您可能需要查看更新的截屏视频- 因为在 1.0 版本中更改了一些 API,并且旧版截屏视频现在不同步。

于 2010-11-30T01:30:53.443 回答