Sencha touch 2 某些fireEvent操作在构建生产后不会发生
我遇到了一个奇怪的问题,视图中的某些“fireEvent”在我的sencha应用程序正在构建生产之后将不起作用。在构建之前,一切正常,操作将按预期进行,但是,在构建生产之后,我发现由“this”触发的“firefevent”是正常的,但由变量触发的“firefevent”是异常的。下面是我的代码Sencha touch 2 某些fireEvent操作在构建生产后不会发生,sencha-touch-2,Sencha Touch 2,我遇到了一个奇怪的问题,视图中的某些“fireEvent”在我的sencha应用程序正在构建生产之后将不起作用。在构建之前,一切正常,操作将按预期进行,但是,在构建生产之后,我发现由“this”触发的“firefevent”是正常的,但由变量触发的“firefevent”是异常的。下面是我的代码 Ext.define('WirelessCity.view.TopMenu', { extend:'Ext.Toolbar', alias:'widget.topmenu',
Ext.define('WirelessCity.view.TopMenu', {
extend:'Ext.Toolbar',
alias:'widget.topmenu',
initialize: function(){
this.callParent(arguments);
var topMenu = this;
var btn = {
xtype: 'button',
width: 42,
margin: '5 0 5 3',
border: '0',
style: 'background:url(resources/images/left_btn.png);',
handler: this.onMarkButtonTap, // will work
scope: this
};
var search = {
width: 46,
margin:'3 5 0 0',
style:'background:url(resources/images/search_btn.png);border:0;background-repeat:no-repeat;',
initialize: function(){
this.element.on({
tap: function(){
topMenu.fireEvent('searchCmd', topMenu); // will not work
}
});
}
}
this.add([btn, search]);
},
config: {
docked: 'top',
//flex: 1,
height: 38,
padding: 0,
margin: 0,
border: 0,
style: 'background:url(resources/images/top.png)'
},
onMarkButtonTap: function(){
//Ext.Msg.alert('mark');
this.fireEvent('markCmd', this);
}
});
这是因为您只能在创建新组件时传递配置,而不能传递函数(如
初始化
)。如果您想覆盖这样的方法,您必须通过扩展另一个类来创建自己的类(Ext.Button,在本例中为)
但是,对于您的特定用途,您可以在添加侦听器时使用元素
选项:
var search = {
width: 46,
margin:'3 5 0 0',
style:'background:url(resources/images/search_btn.png);border:0;background-repeat:no-repeat;',
listeners: {
element: 'element',
tap: function() {
topMenu.fireEvent('searchCmd', topMenu);
}
}
};
是的,这很有效,谢谢rdougan,但是在构建产品之前使用“初始化”功能也很有效。为什么?@user1937869因为在开发过程中它应该发出警告——但出于某种原因它没有。我已经和其他开发者提出了这个问题。