【问题标题】:Reference to button by name按名称引用按钮
【发布时间】:2014-05-23 21:06:17
【问题描述】:

我有 2 种形式,在第一种形式中我有 button1:

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

在第二种形式中,我有 button2,当在第二种形式中单击按钮时,第一种形式中的按钮被禁用,然后我使用按钮的 id (id:'button1') 并进行此操作:

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

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

【问题讨论】:

    标签: button extjs


    【解决方案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' }
        ]
    }]
    

    ...这会在层次结构中创建一个额外的“步骤”,您必须在查询中考虑该步骤。例如,如果您的表单具有 formIditemId,您可以尝试以下操作:

    Ext.ComponentQuery.query('#formId toolbar #myButtonId')[0].disable();
    

    我已经 updated your fiddle 来证明这一点。

    【讨论】:

    • 如果此按钮的形式不同,则不起作用(
    • 组件查询可用于捕获许多组件或隔离特定组件。我认为您需要更具体地说明您的要求 - 您可以设置一个小提琴来演示问题吗?
    猜你喜欢
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    相关资源
    最近更新 更多