【问题标题】:ExtJS 4.1 - How to override all fieldsExtJS 4.1 - 如何覆盖所有字段
【发布时间】:2012-06-26 17:41:37
【问题描述】:

我想将插件应用到 ExtJS 4.1 库中的所有字段数字字段、文本字段、日期字段等)。 有谁知道我该怎么做?

据我所知,所有字段都是从 BaseField 扩展而来的。所以我尝试了这个;但它根本没有用。如果有人可以指导我,我会很高兴。

提前致谢。

Ext.form.BaseField.override({
     plugins    : [ 'clearbutton' ]
}); 

【问题讨论】:

  • 这是一个无效的问题,因为用 clearbutton 扩展覆盖所有字段没有意义。 Extjs 4.1 中的某些表单字段与 clearbutton 不兼容。

标签: javascript extjs4 overriding extjs4.1


【解决方案1】:

也许这种语法会更好用?

Ext.override(Ext.form.field.Base, {
   plugins    : [ 'clearbutton' ]
});

【讨论】:

  • 不幸收到此错误:“未捕获的类型错误:无法调用未定义的方法 'toLowerCase'”
  • 我试了一下,得到了同样的错误。清除按钮显然不适用于 textareas。如前所述,您的问题没有解决方案。您必须专门覆盖与 clearbutton 兼容的字段。
  • 哎呀,我最后的陈述是不正确的,经过更多调查,实际上是 Ext.form.field.Display 在我的情况下导致了问题,因为没有为该字段呈现实际的 元素。这是有道理的,因为您不应允许用户清除他/她无法输入数据的字段。
【解决方案2】:

尝试重写 initComponent 方法:

Ext.form.BaseField.override({
 initComponent : function(){
   var me = this;
   me.plugins = Ext.Array.merge(me.plugins || [],  [ 'clearbutton' ]);
   me.callParent();
 }
}); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 2018-11-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多