按名称引用按钮

时间:2014-05-22 12:31:20

标签: button extjs

我有2个表单,在第一个表单中我有button1:

   Buttons[{
    width: 350,
    text: 'Book',
    name:'button1'}]

在第二个表单上我有button2,当按钮单击第二个表单时,第一个表单中的按钮被禁用,在我使用按钮的id(id:'button1')之前,并执行此操作:

Ext.getCmp('button1').setDisabled(true);

但现在我删除ID并在组件中使用名称。但我不知道如何按名称禁用button1!

1 个答案:

答案 0 :(得分:1)

按钮没有name属性 - 您应该查阅documentation以查看您可以使用的配置变量。我改为为其分配itemId,以便您可以使用up()down()函数,以便从事件处理程序中轻松查找组件层次结构中的项目。

或者,如果您想直接找到它,可以使用以下内容查找该项目:

{
    text   : 'Button',
    itemId : 'buttonSelector'
}
var button = Ext.ComponentQuery.query('#buttonSelector');
if(button.length) button[0].disable();

请注意,ComponentQuery实用程序会返回一系列项目(即使您使itemId唯一)。这是一个简单的fiddle / demonstration


在回复您的评论时,可能会对buttons配置实际执行的内容产生混淆 - 根据docs,它是以下内容的简写:

dockedItems: [{
    xtype: 'toolbar',
    dock: 'bottom',
    ui: 'footer',
    defaults: {minWidth: minButtonWidth},
    items: [
        { xtype: 'component', flex: 1 },
        { xtype: 'button', text: 'Button 1' }
    ]
}]

...这会在层次结构中创建一个额外的"步骤" ,您必须在查询中考虑这些步骤。例如,如果您的表单中有{{1>} formId ,您可以尝试以下内容:

itemId

updated your fiddle来证明这一点。