有没有办法配置ExtJS(通过Ext.override?),以便Ext.form.Action.Submit的submitEmptyText配置选项默认为false而不是true?
我知道可以覆盖类上的方法,但我不知道默认配置属性,有人可能会认为,因为配置选项主要是公共属性,控制台记录Ext.form.Action.Submit.submitEmptyText将输出false但它未定义。
我成功的一种方法是为run方法创建一个拦截器但基本上渲染submitEmptyText配置选项是无用的,因为它不能再通过传递给构造函数的配置对象进行设置。
Ext.form.Action.Submit.prototype.run = Ext.form.Action.Submit.prototype.run.createInterceptor(function() {
this.options.submitEmptyText = false;
});
答案 0 :(得分:8)
[编辑了几次,但这对我有用]
submitEmptyText实际上不是Ext.form.Action.Submit原型的属性 - 它只是在run函数中检查为“this.options”对象的属性 - 它本身是在超类上定义的, Ext.form.Action
如果你希望默认情况下它是全局假的,那么只需在构造它之后在Ext.form.Action的options属性上设置它
Ext.form.Action.prototype.constructor = Ext.form.Action.prototype.constructor.createSequence(function() {
Ext.applyIf(this.options, {
submitEmptyText:false
});
});
这很棘手,因为Ext.form.Action将this.options设置为其构造函数中的空对象,因此在构造函数执行后必须访问该options属性,这就是createSequence在这种情况下工作的原因。
答案 1 :(得分:3)
如果要覆盖所有实例的Ext.form.Action.submit(),为什么不使用Ext.override? p>
Ext.override(Ext.form.Action.submit, {
submitEmptyText: false
});
答案 2 :(得分:1)
如果您希望 Ext.form.Action.submit 中的 submitEmptyText 为false,则只需在创建 Ext.form时将其设置在配置中.Action.submit 对象。
var submit = Ext.form.Action.submit({
submitEmptyText: false
});
答案 3 :(得分:0)
使用覆盖是非常大胆的,但是如果你能够以正确的方式管理改变:
Ext.override ( Ext.form.Action.submit, { submitEmptyText: false });
如果需要,它会将此设置反转为true。我还建议阅读http://edspencer.net/2009/07/extoverride-monkey-patching-ext-js.html
答案 4 :(得分:0)
也许:
Ext.form.Action.submit.prototype.submitEmptyText = false.
这有助于我:
Ext.Window.prototype.constrainHeader = true;