2012-01-29 44 views
1

我是Ext-JS4的新手。我正在开发一个项目,在其中配置一个工具栏。我在工具栏上添加了几个按钮,其中一个菜单有一个菜单,菜单基本上有一个从JSON商店加载的网格。由于项目中的这种要求,网格在菜单内使用。网格已正确加载,但我需要访问菜单内正在单击的菜单项。我想要点击菜单项的文本。以下代码将更好地解释我的问题。Ext-JS4中的菜单项

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

哪种类型是您的菜单项? – Hadas 2012-01-29 12:14:15

+0

你想要网格行像菜单项一样工作吗?您可以使用“itemclick”事件将监听器分配给网格而不是菜单。 – ischenkodv 2012-01-29 15:19:36

回答

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。点击顶部的“events”并找到“itemclick”。

+0

该问题通过使用record.get(// id here)方法解决。谢谢。 – techie 2012-01-30 11:58:34

+0

我已经更新了解决方案,专门显示record.get()。如果这个答案对你有帮助,请标记为答案。 – Justin 2012-01-30 21:49:26

0

或者你可以让你的菜单通过中继事件来监听网格的事件。

favMenu.relayEvents(favGrid, ['itemclick']); 
favMenu.on('itemclick', me.onFavFunction, me);