2011-02-16 10 views
8

¿Hay alguna manera de configurar ExtJS (a través de Ext.override?) Para que la opción de configuración submitEmptyText para Ext.form.Action.Submit sea falsa de forma predeterminada en lugar de verdadera?Cómo anular una opción de configuración predeterminada en Ext.form.Action.Submit?

Sé que es posible anular los métodos en las clases pero no sé sobre las propiedades de configuración predeterminadas, se podría pensar que las opciones de configuración son en su mayoría propiedades públicas que el registro de la consola Ext.form.Action.Submit.submitEmptyText daría como resultado falso pero no está definido.

Una forma de hacerlo fue creando un interceptor para el método de ejecución pero que básicamente hace que la opción de configuración submitEmptyText sea inútil ya que no se puede establecer a través de un objeto config pasado al constructor.

Ext.form.Action.Submit.prototype.run = Ext.form.Action.Submit.prototype.run.createInterceptor(function() { 
    this.options.submitEmptyText = false; 
}); 

Respuesta

8

[Editado un par de veces, pero esto funciona para mí]

submitEmptyText en realidad no es una propiedad del prototipo Ext.form.Action.Submit - sólo se verifica en la función Ejecutar como una propiedad del objeto "this.options", que se define a sí mismo en la superclase, Ext.form.Action

Si desea que sea globalmente falso de manera predeterminada, simplemente configúrelo en la propiedad de opciones de Ext. .form.Action después de que se construye

Ext.form.Action.prototype.constructor = Ext.form.Action.prototype.constructor.createSequence(function() { 
    Ext.applyIf(this.options, { 
     submitEmptyText:false 
    }); 
}); 

Es complicado, porque Ext.form.Action establece this.options para un objeto vacío en su constructor, por lo que debe tener acceso a esa propiedad de opciones después de que se ejecute el constructor, por lo que en este caso funciona createSequence.

+0

¡Esto funciona como se esperaba! De hecho, la propiedad submitEmptyText no está implementada como una opción de configuración de componente, razón por la cual Ext.override no funciona; ¡esto, por otro lado, funciona a la perfección! ¡Gracias! – ChrisR

+0

Buen trato ... me alegra que lo haya conseguido trabajando –

+0

+1 por la respuesta correcta! – JamesHalsall

1

Si desea que el submitEmptyText de Ext.form.Action.submit ser falsa, acaba de establecer en la configuración cuando se crea el objetoExt.form.Action.submit.

var submit = Ext.form.Action.submit({ 
    submitEmptyText: false 
}); 
+0

Ext.override no funciona en Ext.form.Action (s) en este caso, la propiedad submitEmptyText se implementa de forma diferente en Ext. – ChrisR

3

Si desea anular la Ext.form.Action.submit() para todos los casos a continuación, ¿por qué no usar un Ext.override?

Ext.override(Ext.form.Action.submit, { 
    submitEmptyText: false 
}); 
+1

Ext.override no funciona en Ext.form.Action (s) en este caso, la propiedad submitEmptyText se implementa de manera diferente en Ext. – ChrisR

0

Tal vez:

Ext.form.Action.submit.prototype.submitEmptyText = false. 

Esto me ayuda con:

Ext.Window.prototype.constrainHeader = true; 
Cuestiones relacionadas