将“禁用”配置设置为自定义Ext.field.Text时出现错误

问题描述:

我有一个自定义文本框,它给了我一个文本框旁边的文本框中的按钮。 (运行代码你会明白我的意思)。 唯一的问题是,如果我将禁用状态设置为false,则会出现一条错误消息:
Uncaught TypeError: Object [object Object] has no method 'getValue'
但是,如果将其设置为true,那么一切都很好。将“禁用”配置设置为自定义Ext.field.Text时出现错误

这是我的代码:

var disabled = false; 

    var _oInput = Ext.create("Ext.field.Text", { 
     flex: 8, 
     labelWidth:0, 
     labelAlign: "right", 
     value: self.psValue, 

    }); 

    var _oSenchaObject = Ext.create("Ext.field.Text",{ 
     label: "test", 
     disabled: disabled, //This gives me the error 
     component: { 
      xtype: 'container', 
      layout: 'hbox', 
      items: [ 
       _oInput, 
       { 
       xtype: 'button', 
       flex: 1, 
       text: '...', 
       //disabled: disabled, 
       } 
      ] 
     }, 
    }); 

    var formPanelComment = Ext.create('Ext.form.Panel', { 
     title:"Comments", 
     items: [{ 
      xtype: 'fieldset', 
      title: "Comments", 
      items: [ 
       _oSenchaObject 
      ] 
     }] 
    }); 
+0

似乎你的'_oSenchaObject'的代码片段在''Ext.field“附近缺少一些东西...',请编辑它 –

+0

@ThiemNguyen谢谢你的提高,我编辑它。 –

好问题。 :)

这是因为您在定义“自定义”textfield(包含具有内部按钮的普通文本字段)时发生冲突。

看一看您的代码段,这给你一个错误的路线是:

var _oSenchaObject = Ext.create("Ext.field.Text",{ 
     ... 
     disabled: disabled, //This gives me the error 
     component: { 
      ... 
     }, 
    }); 

这里,disabled配置被应用到子组件(这是在component配置定义),但煎茶触摸功能不知道如何正确地禁用你的文本字段,禁用你的内部容器(其中包含另一个字段和按钮)。我想这就像一个错误或框架限制。

所以,解决方案是只设置disabled配置给你的每个孩子。在上面的例子中,只需将该行移动到_oInput的配置。

希望它有帮助。

+0

这确实消除了错误并禁用了输入字段/按钮,但是使用此解决方案时遇到的问题是标签的设计并不表示该字段被禁用。正常禁用的字段会得到灰色(ish)色调。当我使用你的解决方案时,这个不会。这当然是因为我设置了外部文本字段的标签(并且由于前面的问题,该标签没有被禁用)。 –

+0

如何在'_oInput'中定义'label'?这很自然,因为标签属于该字段 –

+0

如果我这样做,标签宽度与其他“正常”文本字段不同。这是因为宽度是相对于屏幕宽度的,并且添加了按钮,默认情况下标签更短。 –