ExtJS 4.1:覆盖mixins

时间:2013-03-06 11:42:40

标签: javascript html extjs web

我有一个小问题: ExtJS 4.1使用一个名为" Ext.form.Labelable"的mixin。用于渲染标签的所有表单字段。我想更改labelableRenderTpl,它是渲染模板,为所有表单字段添加额外的标签到右侧。 我如何覆盖/执行mixin?是否可能或者我必须覆盖所有使用mixin的类的labelableRenderTpl?

感谢您的帮助和问候! 曼努埃尔

1 个答案:

答案 0 :(得分:6)

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

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

这是未经测试但它应该有效,因为mixin的定义与任何其他类一样。您需要知道的是,现在使用此mixin的所有类将使用新模板。如果是lableable,这个列表很短

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

如果您不想为所有内容进行更改,则需要创建自己的mixin,例如扩展Ext.form.Labelable并覆盖Ext.form.field.Base以将其应用于所有字段。

您可以找到有关覆盖 here 的更多信息。 (即使某些SO社区似乎不喜欢这个问题,你可能会在那里找到一些有价值的信息

<强>更新

正如你已经猜到的那样,问题是mixin已被复制到类中,覆盖时间被应用,所以这完全是关于时间的,可能会以硬匹配结束。我建议你继承Ext.form.Labelable mixin,并通过用你的新mixin覆盖实现,将这个新的mixin应用到你需要的所有类中。