我是Ext-JS4的新手。我正在开发一个我正在配置工具栏的项目。我在工具栏中添加了几个按钮,其中一个按钮有一个菜单,菜单基本上有一个从JSON商店加载的网格。由于项目中的这种要求,网格在菜单中使用。网格正确加载但我需要访问菜单中单击的菜单项。我想要点击菜单项的文本。以下代码将更好地解释我的问题。
var store = Ext.create('Ext.data.Store', {
storeId : 'favStore',
model : favModel,
autoLoad : true,
groupField : 'group_header',
proxy : {
type : 'ajax',
url : '../../data/favorites.json',
reader : {
type : 'json',
root : 'favoritesMenu'
}
}
});
var favGrid = Ext.create('Ext.grid.Panel', {
store : store,
columns : [{
dataIndex : 'listItem',
width : 200
}],
features : [groupingFeature],
width : 200,
height : 275,
autoHeight : true,
border : false
});
var favMenu = Ext.create('Ext.menu.Menu', {
items : [favGrid],
listeners : {
'click' : function(store,item) {
alert('Item clicked= ');//tried item.text here but not working
}
}
});
在click事件的alert方法中,我希望单击菜单项的文本。我希望我对这个问题很清楚。谁能给我一些建议?也可以有人在Ext-JS4上建议我一些好的博客吗?
所有这些都是在工具栏的Ext.define()的initComponent方法中定义的。
答案 0 :(得分:0)
您可以使用该文档。 对我来说这非常有用:
答案 1 :(得分:0)
我相信你的情况是你希望将听众归因于你的网格,而不是菜单。有点像...
var favGrid = Ext.create('Ext.grid.Panel', {
store : store,
columns : [{
dataIndex : 'listItem',
width : 200
}],
features : [groupingFeature],
width : 200,
height : 275,
autoHeight : true,
border : false,
listeners: {
'itemclick': function(view, record, item, index, e, eOpts){
//Assuming 'name' is a fieldname in the record
alert('item clicked = ' + record.get('name'));
}
}
});
在此处查看Ext.grid.Panel文档:http://docs.sencha.com/ext-js/4-0/#!/api/Ext.grid.Panel。点击顶部的“活动”,找到“itemclick”。
答案 2 :(得分:0)
或者您可以让菜单通过转发事件来收听网格的事件。
favMenu.relayEvents(favGrid, ['itemclick']);
favMenu.on('itemclick', me.onFavFunction, me);