0
我有這個與ExtJS 4.2.1奇怪的問題。控制器的聽衆從其他視圖捕捉事件(面板點擊)
我有一個控制器的偵聽器從它不應該看到事件。
這裏的所述控制器:
Ext.define('Customer_Portal_UI.controller.NavigationMenu', {
extend: 'Ext.app.Controller',
init: function() {
this.control({
'panel': {
render: function (panel) {
panel.body.on('click', function (panel, e) {
alert('onclick');
});
}
}
});
}
});
這是控制'這樣的觀點:
Ext.define('Customer_Portal_UI.view.NavigationMenu', {
extend: 'Ext.form.Panel',
alias: 'widget.navigationmenu',
region: 'west',
layout: 'fit',
ui: 'cssmenu',
loader: {
autoLoad: true,
url: '/resources/notloggedin.html'
}
});
但它也抓住面板點擊從這樣的觀點:
Ext.define("Customer_Portal_UI.view.MainContent", {
extend: 'Ext.form.Panel',
alias: 'widget.maincontent',
region: 'center',
layout: 'card',
border: false,
activeItem: 0,
requires: ['Ext.grid.Panel'],
initComponent: function() {
this.items = [
{
xtype: 'panel',
title: ''
},
{
xtype: 'gridpanel',
id: 'contactlistgrid',
store: Ext.data.StoreManager.lookup('contactStore'),
columns: [
....
],
features: [{
ftype: 'grouping',
groupHeaderTpl: ['{columnName}: {name} - ({rows.length} employees)'],
hideGroupedHeader: true,
startCollapsed: false
}],
viewConfig: { id: 'contactlistgridview' }
},
{
xtype: 'gridpanel',
id: 'caselistgrid',
store: Ext.data.StoreManager.lookup('caseStore'),
columns: [
{ text: 'Title', dataIndex: 'title' },
{ text: 'Description', dataIndex: 'description' },
{ text: 'Ticket number', dataIndex: 'ticketnumber' }
],
viewConfig: { id: 'caselistgridview' }
}
]
this.callParent(arguments);
}
});
你看到任何明顯的原因爲什麼會這樣做? panel
確實是我點擊的面板,而不是文檔正文,這可能解釋了原因。
注意,在不要再追從其它面板點擊,剛剛從MainContent
來看,它不應該...
感謝。
您的選擇器說'panel',這意味着它將匹配面板(或子類)的每個組件。你需要改進你的選擇器才能匹配相關的東西。 –
@EvanTrimboli感謝您的評論,找到了解決辦法。 –
@EvanTrimboli我不明白爲什麼控制器會從其他視圖的「面板」捕獲事件。控制器在設計時是否會這樣做,我們只是爲了組織目的而將邏輯分離到不同的物理控制器文件中?謝謝。 –