EXTJS 6.0.2 - 禁用文件字段按钮不起作用

时间:2017-08-09 19:02:25

标签: javascript html extjs

我试图在运行时从viewcontroller禁用文件字段上的按钮,但是我收到了错误。

Component.js中的错误

me.ariaEl.dom.setAttribute('aria-disabled',false); //无法读取null的属性'setAttribute'[似乎me.ariaEl.domis为null]

错误堆栈跟踪.........

Uncaught TypeError: Cannot read property 'setAttribute' of null
at constructor.onEnable (Component.js?version=20170809094755:4378)
at constructor.callParent (Base.js?version=20170809094755:1288)
at constructor.onEnable (Button.js?version=20170809094755:1786)
at constructor.callParent (Base.js?version=20170809094755:1288)
at constructor.onEnable (FileButton.js?version=20170809094755:165)
at constructor.enable (Component.js?version=20170809094755:3033)
at constructor.setDisabled (Component.js?version=20170809094755:4863)

我有一个简单的文件字段,

           {
                xtype: 'filefield',
                fieldLabel: 'Attach Items',
                buttonText: 'Browse Items',
                itemId : 'buttonid',
                buttonConfig: {
                    id : 'uploadmailwidget0Btn'


                },
           }

尝试在viewcontroller中禁用 - 代码:

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

有人可以帮忙吗?问一下很简单,我想从viewcontroller中禁用filefield上的按钮。

2 个答案:

答案 0 :(得分:1)

我认为您要做的是在ViewController中使用lookup

您需要添加对按钮的引用

{
  xtype: 'filefield',
  fieldLabel: 'Attach Items',
  buttonText: 'Browse Items',
  itemId : 'buttonid',
  buttonConfig: {
    id : 'uploadmailwidget0Btn',
  },
  reference: 'myButtonRef'
},

并在ViewController中使用该引用来使用lookup并更改禁用值。

  function() {
    this.lookup('myButtonRef').setDisabled(true);
  }

当然,我还没有使用ExtJS,但理论上这应该工作

答案 1 :(得分:1)

ExtJS 6 documentation所示,setDisabled方法是私有的,因此无法访问。

但是,我们可以做这样的事情。请记住,此解决方案并不聪明,但可行。 测试example fiddle

Ext.application({
    name : 'Fiddle',
    launch : function() {
        Ext.create('Ext.window.Window', {
            title: 'Hello',
            height: 200,
            width: 400,
            layout: 'fit',
            items:  [{
                 xtype: 'filefield',
                 id: 'fileid',
                 fieldLabel: 'Attach Items',
                 buttonText: 'Browse Items',
                 itemId: 'buttonid',
                 buttonConfig: {
                     id: 'uploadmailwidget0Btn'
                 }
            }, {
                 xtype: 'button',
                 text: 'Click to set disable',
                 handler : myBtnHandler
            }]
        }).show();

    }
});

var myBtnHandler = function(btn) {

    if (Ext.getCmp('fileid').bodyElement.dom.childNodes[0].childNodes[2].childNodes[1].childNodes[0].childNodes[2].disabled)
    {
        btn.setText('Click to set disable');
        Ext.getCmp('fileid').bodyElement.dom.childNodes[0].childNodes[2].childNodes[1].childNodes[0].childNodes[2].disabled = false;
    }
    else
    {
        btn.setText('Click to set enable');
        Ext.getCmp('fileid').bodyElement.dom.childNodes[0].childNodes[2].childNodes[1].childNodes[0].childNodes[2].disabled = true;
    }
}