Sencha touch Sencha Touch 2活动:绘画vs表演?
我有一个关于Sencha touch Sencha Touch 2活动:绘画vs表演?,sencha-touch,sencha-touch-2,Sencha Touch,Sencha Touch 2,我有一个关于show事件的问题。 在我的应用程序中,我正在处理面板的绘制事件,如下所示: Ext.define('mvcTest.controller.Test', { extend: 'Ext.app.Controller', config: { refs: { panel: '#testpanel' }, control:{ panel: { painted
show
事件的问题。
在我的应用程序中,我正在处理面板的绘制事件,如下所示:
Ext.define('mvcTest.controller.Test', {
extend: 'Ext.app.Controller',
config: {
refs: {
panel: '#testpanel'
},
control:{
panel: {
painted: 'onPainted'
}
}
},
onPainted: function(){
alert('painted');
}
});
docu说,还有一个“表演”活动,但根本没有被炒鱿鱼:
Ext.define('mvcTest.controller.Test', {
extend: 'Ext.app.Controller',
config: {
refs: {
panel: '#testpanel'
},
control:{
panel: {
show: 'onShow'
}
}
},
onShow: function(comp, obj){
alert('show');
}
});
为什么这不起作用?
我知道,提醒是错误的,但这不是问题所在。
谢谢
mike您无法处理控制器中的“绘制”事件,因为它没有向上冒泡
来自sencha文档:此事件不可用于事件委派。取而代之的是,由于性能原因,只有当您明确地向其添加至少一个侦听器时,“绘制”才会触发。
您可以通过在面板中定义侦听器来处理它
Ext.define('MyApp.view.MyPanel', {
extend: 'Ext.Panel',
config: {
},
listeners: {
painted: function (element, options) {
console.log("I've painted");
}
}
});
但“show”事件可以在控制器中处理。检查应用程序的其他部分是否看到该控制器。
(您是否提供了控制器的参考?面板的id是否正确?您的控制器似乎没有错误。关键原因可能在于你申请的另一部分,但。。。好的,根据我的经验:
直接绘制事件。每次在屏幕上真正呈现视图时,painted
就会启动。(注意:painted
事件在视图的子组件完全呈现之前激发。换句话说,painted
第一,DOM生成第二。)
show
事件不一定会触发,尤其是在视图初始化时show
事件是当您首先以某种方式隐藏视图,然后稍后显示视图时触发的事件
只是经验,可能是变数。但希望它能对您有所帮助。我知道这是一条旧线索,但有人可能会发现它很有用:
Sencha最初不会启动“show”和“Paint”活动。
你需要先触发它
使用此代码段可侦听来自控制器的事件:
Ext.define('MyApp.view.MyPanel', {
extend: 'Ext.Panel',
config: {
},
listeners: {
painted: function (element, options) {
this.fireEvent('painted', [element, options])
}
}
});
1) 你是否在app.js中包含了控制器?是的,如果没有它,第一个版本将无法工作。因此“绘制”事件正在工作,但“显示”不起作用?不是只有在组件上调用show()方法时才会触发show吗?是的,绘制工作正常!我不知道,当节目开播时,文档中没有任何信息。啊,好的,谢谢。但是为什么我可以在控制器中处理绘制的事件呢?面板的id是正确的,参考资料似乎都是正确的。控制器将初始化,…这是离题的,但是:我需要15个声誉才能得到+1,或者说+1是什么意思?;)也许他完全同意这个答案。对不起,我确实不知道。因为绘制的
,实际上可以在控制器中进行事件注册。若要显示
事件,它也必须可用。但问题是:为什么painted
有效,而show
无效?只是评论一下。答案是否定的。另外,不要依赖ST2文档。这是愚蠢的。仅从实际代码行中获取exp。根据我的经验,以及文档和文档中的其他注释,绘制的
在控制器中不可用。好的,这个问题的原因是:当视图显示给用户时,我想执行ajax请求。响应是一个json对象,它是视图组件的模型。也就是说,画画是一条路吗?show event:我认为当组件显示给用户并且所有子组件都被完全渲染时,show是默认事件。对于painted
event,您是对的。对于show
event:正如我所说,当视图“更改其状态”从隐藏变为可见时,它将触发。因此,当视图和子视图未完全渲染时,show
(甚至painted
)事件可能会被触发。希望足够清楚啊,好的,我明白了。。我分析了“面板开关”上的html。面板将隐藏为“显示:无”。当我切换回时,它被阻塞,因此不会触发show事件。显示事件指css“可见性”?