Javascript extjs4.1:覆盖混合

Javascript extjs4.1:覆盖混合,javascript,html,extjs,web,Javascript,Html,Extjs,Web,我有一个小问题: ExtJS4.1对所有表单字段使用名为“Ext.form.Labelable”的mixin来呈现标签。我想更改所有表单字段的labelableRenderTpl,它是渲染模板,以便在右侧添加一个额外的标签。 如何覆盖/导出mixin?对于使用mixin的所有类,我是否有可能或者必须重写labelableRenderTpl 谢谢你的帮助和问候! Manuel您可以在此处为Ext.form.Labelable应用覆盖 Ext.override(`Ext.form.Labelable

我有一个小问题: ExtJS4.1对所有表单字段使用名为“Ext.form.Labelable”的mixin来呈现标签。我想更改所有表单字段的labelableRenderTpl,它是渲染模板,以便在右侧添加一个额外的标签。 如何覆盖/导出mixin?对于使用mixin的所有类,我是否有可能或者必须重写labelableRenderTpl

谢谢你的帮助和问候!
Manuel

您可以在此处为
Ext.form.Labelable
应用覆盖

Ext.override(`Ext.form.Labelable`, {
    labelableRenderTpl: 'Your Template'
});
这是未经测试的,但它应该可以工作,因为mixin的定义与任何其他类一样。您需要知道的是,现在使用此mixin的所有类都将使用新模板。在可标记的情况下,此列表较短

  • Ext.form.FieldContainer
  • Ext.form.field.Base
  • Ext.form.field.HtmlEditor
如果您不想全部更改它,则需要创建自己的mixin,例如,通过扩展
Ext.form.Labelable
并覆盖
Ext.form.field.Base
将其应用于所有字段

您可以找到有关覆盖的更多信息。(即使SO社区中的一些人似乎不喜欢您的案例中的这个问题,您可能会在其中找到一些有价值的信息)

更新


正如您已经猜到的,问题在于,在应用覆盖时,mixin已经复制到类中,所以这一切都与时间有关,并且可能以硬匹配结束。我建议您继承
Ext.form.Labelable
mixin,并通过使用新的mixin覆盖实现,将此新的mixin应用于所有需要的类。

您好,非常感谢您的回答。不幸的是,用
Ext.override
覆盖mixin类不起作用。它不影响
FieldContainer
Base
HtmlEditor
。我猜这是因为当我重写mixin时,mixin已经应用于这个类了??我想唯一的解决办法是直接重写类中的mixin方法???@mesx如果你已经阅读了我发布的链接,你就会知道当mixin方法只是混合在一起时,你不能重写它。现在我已经测试过了,我必须承认,覆盖mixin似乎是不可能的。覆盖和原型都不起作用。这真是一种奇怪的行为。。。稍后我会回顾并给你反馈。