gpt4 book ai didi

extjs - 菜单点击事件被触发两次。为什么?

转载 作者:行者123 更新时间:2023-12-01 02:22:26 25 4
gpt4 key购买 nike

使用推荐的 this.control: 控制事件的 Controller 构造:

Ext.define('Mb.controller.Sav_vpc', {
extend: 'Ext.app.Controller',
init: function() {
console.log('controller.init called');
this.control({
'#storeMenu menuitem': {
click: this.onStoreMenuClicked
}
});
}
});

函数 onStoreMenuClicked被调用两次,因为 init Controller 的方法被调用两次,因此它监听事件两次。

但是什么时候是 controller.init()叫?为什么它被调用两次?

这是我的 application.launch功能:
Ext.define('Mb.Application', {
extend: 'Ext.app.Application',
launch: function() {
console.log('launching app');
var controller = Mb.app.getController('Name');
console.log('end launching app');
});
...

这将在控制台中给出以下输出:
controller.init called
launching app
controller.init called
end launching app

最佳答案

打电话时getControllerapplication.launch , Controller 的 init 方法再次被调用,即使 Controller 已经初始化。

我不知道这是设计使然还是某种错误,但我找到了基于 recommendations of @AlexTokarev 的解决方案“ Controller 间通信”。

Controller :

Ext.define('Mb.controller.Sav', {
extend: 'Ext.app.Controller',
init: function(){
this.listen({
controller: {
'*': {
savOnLaunch: this.onUserLoaded
}
}
})
},

应用启动:
Ext.define('Mb.Application', {
extend: 'Ext.app.Application',
launch: function() {
this.fireEvent('savOnLaunch');
}

关于extjs - 菜单点击事件被触发两次。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19265286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com