遇到問題並且不確定如何繼續調試。發現一個問題,看起來非常像我,但是該解決方案不起作用:How to catch tree node clicks from a (MVC) controller in ExtJs 4?ExtJS 4.1控制器處理樹節點單擊事件
唯一的區別我可以在問題之間看到和我的是,我的樹作爲原料,xtype
項目對象直接創建我的佈局中treepanel
這是一個單獨創建的地方。
這裏是我的控制器:
Ext.define("IOL.controller.app.AppLayout", {
extend: 'Ext.app.Controller',
init: function() {
this.control({
'app toolbar > button[itemId=filter]' : {
click: this.onFilter
},
'menuTree': {
itemclick: this.onFilter
}
});
},
onFilter: function(btn) {
alert('test');
Ext.create('IOL.view.app.Home').show();
}
});
這裏是我的觀點相關的項目:
{
xtype: 'treepanel',
title: 'Navigation',
split: true,
collapsible: true,
margins: '5 0 5 5',
region: 'west',
width: 170,
id: 'menuTree',
alias: 'widget.menuTree',
store: Ext.create('IOL.store.app.AppNav'),
useArrows: true,
rootVisible: false
/*listeners : {
itemdblclick : function(view,rec,item,index,eventObj) {
console.log(view);
console.log(rec);
console.log(item);
console.log(index);
console.log(eventObj);
if(rec.get('leaf') == true){
Ext.ComponentQuery.query('tabpanel')[0].add({
xtype: 'panel',
title: rec.get('text'),
itemId: rec.get('id'),
//url: 'server/HomeTab/read.php',
html : 'test content name: ' + rec.get('id'),
closable : true
});
}
}
}*/
}
爲app toolbar > button[itemId=filter]
作品的按鈕控制,但分配相同的動作到「menuTree」不起作用。瀏覽器控制檯帶回Ext.getCmp('menuTree')
有效的對象,所以我迷失了爲什麼控制器似乎沒有在樹上作用。
樹正在從商店加載,這讓我想知道這是否與在jQuery中需要使用.on('click')
而不是.click()
類似的場景...幾乎就像控制器沒有看到樹(但看到在同一視圖中的按鈕?)。我故意直接在樹上註釋掉處理程序(它可以工作)。
可以提供所有文件,如果它會幫助。
太棒了!由於某種原因,使用'treepanel'仍然不起作用,但#menuTree的工作就像一個魅力。沒有意識到這是控制器允許的。謝謝! – chrisboustead
閱讀[Ext.ComponentQuery](http://docs.sencha.com/ext-js/4-1/#!/api/Ext.ComponentQuery),它值得和更多。 –