1

对于我的一生,无论我如何附加事件处理程序,我都无法让我的数据视图触发 itemtaphold 事件。itemtap 事件触发得很好。我能做到的最接近的是在 dom 元素上使用 longpress ,但这并没有给我一个对我的控件的引用,只是 dom 元素。sencha touch 2 广告上的 dataview 的 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);
        }
    }
});
4

0 回答 0