我在ExtJS中有一个要求,其中,点击菜单项我必须从视图中触发事件并将其捕获到控制器中。
以下是我的方法,但它不起作用。在调试时,Control会一直到火灾事件发生但它没有在控制器中捕获(不会进入onResetAction函数)
请帮帮我。
查看:
new Ext.menu.Menu ({
width: 150,
height: 100,
itemId: 'menuItem123',
margin: '0 0 0 0',
items: menuOptions,
listeners:{
'click': function(menu, menuItem, e, eOpts)
{
if(menuItem.text === 'Inherit') {
var viewConfig = {
'viewName': 'Preference',
'preferenceElement': preferenceElement,
'scope': menu
};
menuItem.fireEvent('resetData', viewConfig);
}
this.hide();
}
}
});
控制器:
init: function(application) {
this.listen({
component: {
'container[itemId=menuItem123] menuItem[text=Inherit]': {
'resetData': this.onResetAction,
'refreshLogoData': this.onRefresh
}
}
});
},
onResetAction: function(viewConfig) {
var me = this;
/* some function*/
},
答案 0 :(得分:0)
我猜您的选择器不起作用,您可以使用Ext.ComponentQuery.query()
或Ext.all()
进行检查。
如果问题是这样,请尝试从以下位置更改选择器:
'container[itemId=menuItem123] menuItem[text=Inherit]'
为:
'#menuItem123 menuItem[text=Inherit]'
答案 1 :(得分:0)
试试这个
init: function(application) {
var me = this;
this.control({
'#menuItem123 menuitem': { //menuitem all small
resetData: me.onResetAction,
refreshLogoData: me.onRefresh
}
});
},
onResetAction: function(viewConfig) {
var me = this;
/* some function*/
},
这是一个类似模式的小提琴:https://fiddle.sencha.com/#fiddle/13p7