Как переопределить параметр конфигурации по умолчанию на Ext.form.Action.Submit? - PullRequest
8 голосов
/ 16 февраля 2011

Есть ли способ настроить ExtJS (через Ext.override?), Чтобы параметр конфигурации submitEmptyText для Ext.form.Action.Submit по умолчанию имел значение 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;
});

Ответы [ 5 ]

8 голосов
/ 22 февраля 2011

[Отредактировано несколько раз, но это работает для меня]

submitEmptyText на самом деле не является свойством прототипа Ext.form.Action.Submit - оно просто проверяется в функции запуска как свойствообъекта "this.options" - который сам определен в суперклассе, Ext.form.Action

Если вы хотите, чтобы он был глобально ложным по умолчанию, просто установите его в свойстве options Ext.form.Action после его создания

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.

3 голосов
/ 22 февраля 2011

Если вы хотите переопределить Ext.form.Action.submit () для всех экземпляров, то почему бы просто не использовать Ext.override?

Ext.override(Ext.form.Action.submit, { 
    submitEmptyText: false
});
1 голос
/ 21 февраля 2011

Если вы хотите, чтобы submitEmptyText из Ext.form.Action.submit было ложным, просто установите его в конфигурации при создании Ext.form.Action.submit object.

var submit = Ext.form.Action.submit({
    submitEmptyText: false
});
0 голосов
/ 12 мая 2011

Может быть:

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

Это помогает мне с:

Ext.Window.prototype.constrainHeader = true;
0 голосов
/ 23 февраля 2011

Переопределить изменения очень смело, однако, если вы можете управлять этими изменениями, правильно:

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

это позволит изменить эти настройки на true, если это необходимо. Я также предлагаю прочитать http://edspencer.net/2009/07/extoverride-monkey-patching-ext-js.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...