2013-03-06 78 views
4

我有一个小问题: ExtJS的4.1采用了一种名为“Ext.form.Labelable”为所有表单域呈现标签混入。我想更改所有表单字段的labelableRenderTpl,即渲染模板,以在右侧添加额外的标签。 我如何覆盖/ exend一个mixin?它甚至有可能或者我必须重写所有使用mixin的类的labelableRenderTpl?ExtJS的4.1:覆盖混入

THX的帮助和最诚挚的问候! 曼努埃尔

回答

6

您可以将覆盖为Ext.form.Labelable这里

Ext.override(`Ext.form.Labelable`, { 
    labelableRenderTpl: 'Your Template' 
}); 

这是未经测试,但它应该工作造成一个mixin是像任何其他类中定义。你需要知道的是,现在所有类,使用此混入将使用新的模板。在lableable这个名单的情况下,短

  • Ext.form.FieldContainer
  • Ext.form.field.Base
  • Ext.form.field.HtmlEditor

如果你不”不想改变它所有你需要通过扩展Ext.form.Labelable创建自己的例如混入,并覆盖Ext.form.field.Base将其应用到各个领域。

您可能会发现有关重写here一些更多的信息。 (即使一些SO社会似乎不喜欢你的情况下,这个问题你可能会发现在那里一些有价值的信息)

更新

正如你已经猜到的问题是混入了已经复制到课程的时间倍率得到应用,所以这是所有关于时间,可能会在一个艰难的比赛结束。我建议你从Ext.form.Labelable混入继承和运用这个新的混入到你需要重写你的新的mixin实施的所有类。

+0

Hi和非常感谢你的回答。不幸的是,它不能用'Ext.override'来覆盖mixin类。它不会影响'FieldContainer','Base'和'HtmlEditor'。我想这是因为mixin已经应用到这个类,当我重写混合?我想唯一的解决方法是直接覆盖类中的mixin方法? – mesx 2013-03-07 08:51:29

+1

@mesx如果已经看过,我贴你就会知道,当它在短短的混合不能覆盖一个mixin方法的链接。现在我测试了它,我必须承认,这似乎是不可能覆盖一个mixin。这种工作既没有覆盖也没有原型。这是一个非常奇怪的行为......我稍后会回头看看并给你反馈。 – sra 2013-03-07 09:37:08

+0

非常感谢你! – mesx 2013-03-08 12:20:22