Sencha Touch 2 DataView itemtaphold未触发

时间:2012-06-04 14:54:36

标签: events sencha-touch-2

对于我的生活,无论我如何附加事件处理程序,我都无法使用dataview来触发itemtaphold事件。 itemtap事件触发就好了。我最接近的就是在dom元素上使用longpress,但这并没有给我一个对我的控件的引用,只是dom元素。在sencha touch 2商业广告上,数据视图的itemtaphold事件是否已被破坏?

BrowserGrid.js:

Ext.define('MyApp.view.BrowserGrid', {
extend: 'Ext.dataview.DataView',
xtype: 'browsergrid',


requires: [
    'MyApp.view.BrowserGridItem',
    'Ext.dataview.*',
    'Ext.plugin.*'
],

config: {
    useComponents: true,
    cls: 'browser-grid',
    defaultType: 'browsergriditem',
    scrollable:{
        direction: 'vertical',
        directionLock: true
    },
    plugins :[{xclass:'Ext.plugin.ListPaging',autoPaging: true}],
    listeners: 
    {
        itemtaphold: function() { console.log('tapped'); }
    }
    }   
});

BrowserGridItem.js

Ext.define('MyApp.view.BrowserGridItem', {
    extend: 'Ext.dataview.component.DataItem',
    xtype : 'browsergriditem',

    config: {

        cls: 'browser-grid-item',
        dataMap: {
            getName: {
                setHtml: 'FILE_NAME'
            },
            getImage: {
                setSrc: 'IMG_URL'
            }
        },
        name: {
            cls: 'x-name'
        },
        image: {
            height:150,
            width: 150,
            flex:1
        },
        layout: {
            type: 'vbox',
            align: 'center'
        }
    },
    applyImage: function(config) {
        return Ext.factory(config, Ext.Img, this.getImage());
    },
    updateImage: function(newImage, oldImage) {
        if (newImage) {
            this.add(newImage);
        }

        if (oldImage) {
            this.remove(oldImage);
        }
    },
    applyName: function(config) {
        return Ext.factory(config, Ext.Component, this.getName());
    },
    updateName: function(newName, oldName) {
        if (newName) {
            this.add(newName);
        }

        if (oldName) {
            this.remove(oldName);
        }
    }
});

0 个答案:

没有答案