javascript - ExtJS 3.3.0 在不知道 ID 的情况下禁用按钮

标签 javascript extjs extjs3

我想知道是否可以在没有 id 的情况下定位按钮,目前正在创建具有以下属性的按钮。

{
    iconCls: 'icon-ok',
    text: 'Save'
}

如果我添加 id: 'saveButton' 到它,我可以简单地调用;

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

它工作正常......但由于不同的原因我不能给按钮一个 ID。

如果有帮助,我有创建按钮的窗口的详细信息

id: 'updateDialog',
modal: true,
width: {$windowWidth},
height: {$windowHeight},
labelAlign: 'top',
title: "Update",
layout:'vbox',

最佳答案

对于像 3.3.0 这样的遗留 ExtJS,你可以使用这样的东西:

Ext.onReady(function () {

    var btn1 = new Ext.Button({
        iconCls: 'icon-ok',
        text: 'Save 01 (ok)'
    });

    var btn2 = new Ext.Button({
        iconCls: 'icon-not-ok',
        text: 'Save 02 (not ok)'
    });

    var btn3 = new Ext.Button({
        iconCls: 'icon-ok',
        text: 'Save 03 (ok)'
    });

    var btn4 = new Ext.Button({
        iconCls: 'icon-not-ok',
        text: 'Save 04 (not ok)'
    });

    var panel = new Ext.Panel({
        renderTo: document.body,
        title: 'Panel',
        items: [ btn1, btn2, btn3, btn4 ]
    });

    panel.items.each( function( element, index, array ) {
        if ( element.iconCls === 'icon-ok' ) {
            element.setDisabled( true );
        }
    });

});

我将四个按钮添加到一个面板,并循环访问它的 items 属性。此属性是一个 Ext.util.MixedCollection。我认为您的按钮在某个容器内,所以这可能会起作用。另一种可能性是处理 Ext.getBody() 元素,但这将需要更多的努力来检测您想要的内容。现场示例:https://fiddle.sencha.com/#view/editor&fiddle/27nh

对于 ExtJS 4 及以上版本,您可以使用 Ext.ComponentQuery.query 函数。

Ext.create('Ext.Button', {
    renderTo: document.body,
    iconCls: 'icon-ok',
    text: 'Save 01'
});

Ext.create('Ext.Button', {
    renderTo: document.body,
    iconCls: 'icon-ok',
    text: 'Save 02'
});

Ext.create('Ext.Button', {
    renderTo: document.body,
    iconCls: 'icon-ok',
    text: 'Save 03'
});

var components = Ext.ComponentQuery.query('[iconCls=icon-ok]');
components.forEach( function( element, index, array ) {
    element.setDisabled(true);
});

我对 ExtJS 很生疏,因为我最后一次使用它是在 2009 年:D

关于javascript - ExtJS 3.3.0 在不知道 ID 的情况下禁用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46535043/

相关文章:

javascript - 单击以在多个位置的多个 html 文件上显示电话号码

javascript - 为数组商店设计模型的最佳方法?

来自数据库/文件的 Javascript 代码

extjs3 - ExtJS 3.4 - 在我的网格面板加载存储后选择行

extjs - 如何最后添加两行网格

javascript - 将 Angular 传递给 IIFE block

javascript - Google Analytics inside Document 准备好不工作了吗?

javascript - jQuery/Javascript 框架效率

javascript - Sencha : Cannot call method 'getHeader' of undefined

javascript - Ext.formPanel 使用关闭按钮复制内容