Events 项目在生成后不可见或事件不起作用

Events 项目在生成后不可见或事件不起作用,events,build,sencha-touch,sencha-touch-2,Events,Build,Sencha Touch,Sencha Touch 2,我有一个非常简单的应用程序:。它由一个视图组成,其中显示一些链接。单击每个按钮后,将出现一个带有目标值的弹出窗口。在构建应用程序之前,一切正常,但在构建应用程序之后,链接根本不会显示。为了显示链接,我正在使用DataView组件。之前,我尝试使用Ext.Component解决这个问题,但不知道为什么在点击任何项目时都没有触发事件(以及“绘制”事件)。下面是我更喜欢使用的IConScreen视图的第二个版本,但如果没有事件,它将毫无用处: Ext.define('SF.view.IconsScre

我有一个非常简单的应用程序:。它由一个视图组成,其中显示一些链接。单击每个按钮后,将出现一个带有目标值的弹出窗口。在构建应用程序之前,一切正常,但在构建应用程序之后,链接根本不会显示。为了显示链接,我正在使用DataView组件。之前,我尝试使用Ext.Component解决这个问题,但不知道为什么在点击任何项目时都没有触发事件(以及“绘制”事件)。下面是我更喜欢使用的IConScreen视图的第二个版本,但如果没有事件,它将毫无用处:

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);
    }
});
Ext.define('SF.view.iconscreen'{
扩展:“Ext.Component”,
xtype:“图标屏幕”,
要求:[
'旧金山商店主菜单'
],
配置:{
tpl:new Ext.XTemplate(“
    ”, '', “
  • ”,

    首先,我认为您的
    this.element
    在列表实际呈现之前是未定义的。因此您不能在构造函数中分配类似的事件。您需要等待绘制/呈现事件,然后在那里分配其他处理程序


    至于跟踪内置代码中的问题,我建议构建<代码>测试<代码>版本。它并没有缩小,但在所有其他方面都等同于生产。

    我正在构建“测试”版本。我还在afterRender函数中分配侦听器,但没有任何运气。尝试添加调试以查看元素是否已定义是的。也是我在主题中已经指出-这两种解决方案只有在构建之后才会失效。这是我最关心的部分:/ST在构建和非构建环境中的行为有差异。例如,我多次注意到
    config
    对象中的一些属性可以直接访问
    var.prop
    In非编译代码,但需要
    var.config.prop
    内置代码。如果您有
    测试
    版本生成-解决此问题的唯一方法-添加调试消息并查看发生了什么。结果是神奇的设置超时(0)解决了问题。显然,在分配侦听器时,DOM在构建版本中还没有准备好。Dumb sencha是Dumb。