удалить плагины в Ext Javascript форме с помощью кода? - PullRequest
1 голос
/ 28 марта 2010

у меня есть следующий элемент формы

{
 fieldLabel:'Username'
,id:"username"
,name:'username'
,allowBlank:false
,plugins:[Ext.ux.plugins.RemoteValidator]
,rvOptions: {
    url:'/registration/member/valid-username'
}

возможно ли удалить плагины позже через код?

Ответы [ 2 ]

1 голос
/ 06 апреля 2010

Я так не думаю. init в плагине запускается при инициализации компонента, поэтому «позже в коде» уже слишком поздно - «ущерб был нанесен», и плагин подключился к событиям компонента и т. Д. Было бы здорово, если бы я были неправы.

0 голосов
/ 06 апреля 2010

Ну, функционально возможно поддерживать плагин деактивация (не уверен в том, чтобы вообще удалить плагин вообще), но большинство плагинов, вероятно, не делают этого, если у них нет причин поддерживать его. Вы должны иметь возможность написать переопределение для плагина и вставить код, который позволит вам активировать / деактивировать его функциональность. Конечно, зависит от конкретного плагина, но если плагин хорошо написан, его следует переопределить.

Мой общий подход будет выглядеть примерно так:

Ext.override(Ext.ux.plugins.SomePlugin, {
   isActive: true,
   doSomething: function(){
      if(this.isActive){
          // copy orig doSomething
      }
   }
});

Тогда вы можете просто установить pluginInstance.isActive = true/false по мере необходимости. Обратите внимание, что это упрощенно - вашему плагину может потребоваться гораздо больше работы для эффективной переопределения. Но этот подход будет хорошим началом.

Или, возможно, вы можете использовать фантазию и использовать функции createInterceptor в плагине, чтобы сделать что-то подобное без дублирования кода.

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