0

我有一个非常简单的应用程序:http ://www.senchafiddle.com/#AREBJ 。它由一个显示一些链接的视图组成。单击它们中的每一个后,会出现一个带有目标值的弹出窗口。在构建应用程序之前一切正常,但在构建后链接根本不显示。为了显示链接,我使用了 DataView 组件。以前我尝试过使用 Ext.Component 来解决它,但不知道为什么在点击任何项目时没有触发事件(以及“绘制”事件)。这是我更喜欢使用的 IconsScreen 视图的第二个版本,但没有事件它是无用的:

Ext.define('SF.view.IconsScreen', {
    extend: 'Ext.Component',
    xtype: 'icons-screen',
    require: [
        'SF.store.MainMenu'
    ],
    config: {
        tpl: new Ext.XTemplate('<ul class="menu-icons-list">',
            '<tpl for=".">',
                '<li class="icon">',
                    '<a target="{url}" style="background: url({icon})">',
                    '</a>',
                    '<span class="icon-text">{name}</span>',
                '</li>',
            '</tpl>',
        '</ul>'
        ),
        store : Ext.create('SF.store.MainMenu'),
        data : [],
        listeners : {
            painted : function(){
                this.onIconTap();
            }
        }
    },

    initialize : function() {
        var storeData = this.getStore().getRange(),
            tplData   = [];

        Ext.Array.each(storeData, function(item){
            tplData.push(item.getData());
        });

        this.setData(tplData);

        this.element.on({
            scope    : this,
            delegate : 'a',
            tap      : 'onIconTap'
        });

        this.callParent();
    },

    onIconTap : function(e, t) {
        this.fireEvent('icontap', e, t);
    }
});

我还附上了一个可构建的版本:https ://mega.co.nz/#!kEZiCTQT!ckFxSQz0qMScpIX1UvfZGxa0qeQfM9MVy8hynjdPHQ8

4

1 回答 1

2

首先,我认为您this.element在实际呈现列表之前是未定义的。所以你不能在构造函数中分配这样的事件。您需要等待绘制/渲染事件,然后在那里分配额外的处理程序。

至于跟踪构建代码中的问题,我建议构建testing版本。它没有被缩小,但它在所有其他方面都等于生产。

于 2013-04-25T16:05:32.657 回答