0
我正在尝试构建ExtJS 6应用程序。 我有两个面板。ExtJs模式面板控制器没有看到我的网格
第一个(Panel3)包含两个网格,并在'payordCmpGrid'网格的行项目上展开事件调用 在控制器'main'中创建模态面板'askObjPanel'。
面板 '·Panel3中'
Ext.define('BillWebApp.view.main.Panel3', {
extend: 'Ext.panel.Panel',
xtype: 'panel3',
title: 'title',
reference: 'panel3',
viewModel: {
type: 'main'
},
controller: 'main',
items: [{
xtype: 'gridpanel',
reference: 'payordGrpGrid',
width: 1200,
minHeight: 120,
margin: '0 0 10 0',
tbar: [{
text: 'addGrp',
handler: 'onGridPayordGrpAdd'
}],
...
{
xtype: 'gridpanel',
iconCls: 'framing-buttons-grid',
reference: 'payordCmpGrid',
width: 1000,
minHeight: 220,
header: false,
items: [{
header: 'Object',
dataIndex: 'klskFk',
width: 200,
queryMode: 'local',
editor: {
xtype: 'combo',
typeAhead: true,
forceSelection: true,
displayField: 'name',
valueField: 'id',
triggerAction: 'all',
allowBlank: false,
listeners: {
expand: 'onGridPayordCmpItemSel'
}
}
},
...
面板 'askObjPanel'
Ext.define('BillWebApp.view.main.AskObjPanel', {
extend: 'Ext.form.Panel',
xtype: 'form-hboxlayout',
alias: 'widget.askobjpanel',
layout: 'form',
plain: true,
reference: 'askObjPanel',
controller: 'main',
items: [{
xtype: 'fieldset',
defaultType: 'textfield',
layout: 'anchor',
items: [
{
xtype: 'fieldcontainer',
layout: 'hbox',
align: 'stretch',
combineErrors: true,
items: [{
flex: 2,
xtype: 'button',
text: 'Найти',
listeners: {
click: 'onAskObjButtonFindPress'
}
}]
}
...
控制器'主'
var askObjPanel;
Ext.define('BillWebApp.view.main.MainController', {
extend: 'Ext.app.ViewController',
alias: 'controller.main',
onGridPayordCmpItemSel: function() {
// creating Panel 'askObjPanel'
askObjPanel = new Ext.form.Panel({
modal: true,
title: 'Find obj',
floating: true,
closable : true,
resizable : true,
layout: 'fit',
controller: 'main', // the same controller 'main'
items: [
{ xtype: 'askobjpanel' }
]
});
askObjPanel.show();
},
onAskObjButtonFindPress: function() {
var grid = this.lookupReference('payordGrpGrid'); // returns grid=null
console.log('Grid='+grid);
}
为什么在控制器事件 'onAskObjButtonFindPress', lookupReference回报格= NULL?
UPD 我做捣鼓这个例子here。 如果您按Button2,变量'网格'不为空,并且您可以更改网格的标题, ,但如果按Button1,然后Button3,变量'网格'为空
我认为你在这里有一些范围问题。尽管对于两个表单使用相同的控制器,但当panel3或者askobjpanel触发事件时,它们的范围并不相同。这就是为什么当你按下模态窗口内的按钮时你无法检索网格。 – qmateub