​Extjs页面创建了一个窗口代码如下,请教大家如何通过itemId 来直接访问最下面的这个'保存'按钮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了​Extjs页面创建了一个窗口代码如下,请教大家如何通过itemId 来直接访问最下面的这个'保存'按钮相关的知识,希望对你有一定的参考价值。

var win = Ext.create("Ext.window.Window",
title: "卡牌编辑",
width: 360,
height: 340,
items:
xtype: "form",
margin: 5,
border: false,
items: [....]
,
buttons: [
text: "保存",
itemId : 'btn_save' ]
);
不要直接回答我,要先页面测试哦,谢谢

你直接说要先测试是因为win.getComponent('btn_save')取不到控件是吧?

这是因为buttons里的控件挂靠到的不是win,而是toolbar里,也就是这个按钮的容器不是win而是toolbar

所以正确的取法应该是win.queryById('btn_save')

var win = Ext.create("Ext.window.Window",

title: "卡牌编辑",

width: 360,

height: 340,

items:

xtype: "form",

margin: 5,

border: false,

       items: []

        ,

buttons: [

text: "保存",

itemId : 'btn_save'

],

renderTo:Ext.getBody()

); 

win.show();

Ext.defer(function()

win.queryById('btn_save').setDisabled(true);

,5000);

来自:求助得到的回答
参考技术A itemId
: String

当没有可利用的对象引用时,itemId可以作为第二选择,用来获得一个组件的引用, 代替 id 与 Ext. getCmp的组合, 使用 itemId 与 Ext.Container. getComponent 方法配合将会获得
itemId 's(的所有者) 或者 id 's(的所有者)。 既然 itemId
's(的所有者)是一个到容器内部MixedCollection的索引, itemId
的作用域就被限定在容器之内---避免与 Ext.ComponentMgr 产生潜在的冲突,它(指Ext.ComponentMgr)需要一个
唯一的 id 。

var c = new Ext.Panel( //
height: 300,
renderTo: document.body,
layout: 'auto',
items: [

itemId: 'p1',
title: 'Panel 1',
height: 150
,

itemId: 'p2',
title: 'Panel 2',
height: 150

]
)
p1 = c.getComponent('p1'); // 与 Ext.getCmp()不同

p2 = p1.ownerCt.getComponent('p2'); // 通过兄弟对象获得引用

另请参见 id 和 ref 。

注意:需要访问一个item的容器请参见 ownerCt 。追问

没有直接回答我的问题

追答

解决问题的方法,可以查看api。

以上是关于​Extjs页面创建了一个窗口代码如下,请教大家如何通过itemId 来直接访问最下面的这个'保存'按钮的主要内容,如果未能解决你的问题,请参考以下文章

Vim多窗口编辑

extjs 如何关闭当前整个网页

ExtJs如何在Window窗口中加载页面上的GridPanel??

ExtJS 4.1 如何动态创建带有网格的窗口

debug按钮位置怎么改

ExtJS 4.2 业务开发数据添加和修改