Ext-JS4中的菜单项

时间:2012-01-29 11:53:18

标签: extjs

我是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方法中定义的。

3 个答案:

答案 0 :(得分:0)

您可以使用该文档。 对我来说这非常有用:

http://docs.sencha.com/ext-js/4-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);