我正在尝试构建 ExtJS 6 应用程序。 我有两个面板。
第一个(Panel3)包含两个网格,并在“payordCmpGrid”网格调用的行项目上展开事件 在 Controller “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'
}
}]
}
...
Controller “主”
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);
}
为什么在 Controller 事件“onAskObjButtonFindPress”中, LookupReference 返回 grid=null?
更新 我摆弄了这个例子 here 。 如果按下 Button2,变量“grid”不为空,并且您可以更改网格的标题, 但如果你按Button1,然后按Button3,变量“grid”为空
最佳答案
不知何故,你的 fiddle 无法工作。不管怎样,一开始它被打开了,所以我做了一些改变并得出了结论。实际上,您在添加“AskObjPanel”时已经覆盖了 View 。所以我做了相应的改变并且它起作用了。您需要做的就是注释掉
controller:'main'
从这部分开始:
xtype: 'form-hboxlayout',
alias: 'widget.askobjpanel',
layout: 'form',
plain: true,
reference: 'askObjPanel',
controller: 'main',
并更改此:
askObjPanel = this.getView().add({
modal: true,
title: 'Find obj',
floating: true,
closable : true,
resizable : true,
layout: 'fit',
items: [
{ xtype: 'askobjpanel' }
]
});
这里还要删除该 Controller 部分。它会起作用的。如有任何问题,请告诉我。
对于审稿人,我很抱歉,但我不知道这一点。不管怎样,谢谢你让我知道
关于javascript - ExtJs 模式面板 Controller 看不到我的网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43198354/