我有一个小问题:ExtJS 4.1 对所有表单字段使用一个名为“Ext.form.Labelable”的 mixin 来呈现标签。我想更改作为渲染模板的 labelableRenderTpl,以便为所有表单字段在右侧添加一个额外的标签。我如何覆盖/扩展mixin?甚至有可能还是我必须为所有使用 mixin 的类覆盖 labelableRenderTpl?
感谢您的帮助和最诚挚的问候!曼努埃尔
我有一个小问题:ExtJS 4.1 对所有表单字段使用一个名为“Ext.form.Labelable”的 mixin 来呈现标签。我想更改作为渲染模板的 labelableRenderTpl,以便为所有表单字段在右侧添加一个额外的标签。我如何覆盖/扩展mixin?甚至有可能还是我必须为所有使用 mixin 的类覆盖 labelableRenderTpl?
感谢您的帮助和最诚挚的问候!曼努埃尔
Ext.form.Labelable
您可以在此处应用覆盖
Ext.override(`Ext.form.Labelable`, {
labelableRenderTpl: 'Your Template'
});
这是未经测试的,但它应该可以工作,因为 mixin 的定义与任何其他类一样。你需要知道的是,现在所有使用这个 mixin 的类都将使用新的模板。在可标记的情况下,此列表很短
如果您不想完全更改它,则需要创建自己的 mixin,例如通过扩展Ext.form.Labelable
和覆盖Ext.form.field.Base
将其应用于所有字段。
您可以在此处找到有关覆盖的更多信息。(即使某些 SO 社区似乎对您的情况不喜欢这个问题,您也可以在那里找到一些有价值的信息)
更新
正如您已经猜到的那样,问题是在应用覆盖时,mixin 已经被复制到类中,所以这完全是关于时间的,并且可能以硬匹配结束。我建议您从Ext.form.Labelable
mixin 继承并将这个新的 mixin 应用到您需要的所有类,方法是用新的 mixin 覆盖实现。