我有一个小问题:
ExtJS 4.1使用名为“Ext.form.Labelable”的mixin为所有表单字段呈现标签.我想更改labelableRenderTpl,它是渲染模板,为所有表单字段添加额外的标签到右侧.
我如何覆盖/执行mixin?是否可能或者我必须覆盖所有使用mixin的类的labelableRenderTpl?
感谢您的帮助和最好的问候!
曼努埃尔
解决方法:
您可以在此处为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覆盖实现.