我有一个小问题:
ExtJS 4.1使用名为“Ext.form.Labelable”的mixin来为所有表单字段呈现标签。我想更改labelableRenderTpl,即渲染模板,以在所有表单字段中添加额外的标签到右侧。
我该如何覆盖/扩展mixin?是否可能或者我必须为使用mixin的所有类覆盖labelableRenderTpl?
谢谢您的帮助和最好的问候! Manuel
谢谢您的帮助和最好的问候! Manuel
您可以在此处应用对Ext.form.Labelable
的覆盖。
Ext.override(`Ext.form.Labelable`, {
labelableRenderTpl: 'Your Template'
});
这段代码未经测试,但应该可以正常工作,因为mixin就像任何其他类一样被定义。您需要知道的是,现在使用此mixin的所有类都将使用新模板。对于labelable,这个列表很短:
如果您不想为所有内容更改它,您需要创建自己的mixin,例如通过扩展Ext.form.Labelable
并覆盖Ext.form.field.Base
以将其应用于所有字段。
您可以在这里找到有关覆盖的更多信息。(即使一些SO社区似乎不喜欢这个问题,对于您的情况,您可能会在其中找到一些有价值的信息)
更新
正如您已经猜到的那样,问题在于mixin已经复制到类中,而override被应用,因此这完全取决于时间,并且可能最终导致硬匹配。我建议您从Ext.form.Labelable
mixin继承,并通过覆盖实现将此新mixin应用于您需要的所有类。
Ext.override
覆盖混合类并不能生效。它对FieldContainer
、Base
和HtmlEditor
没有影响。我想这是因为在覆盖混合类时,该混合已经被应用到了这些类上?我认为唯一的解决办法就是直接在这些类中覆盖混合方法? - mesx