2012-01-29 69 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);