gpt4 book ai didi

javascript - ExtJs 模式面板 Controller 看不到我的网格

转载 作者:行者123 更新时间:2023-12-03 04:38:20 25 4
gpt4 key购买 nike

我正在尝试构建 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com