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