通过代码删除ext javascript表单中的插件?

时间:2010-03-28 15:05:34

标签: javascript extjs

我有以下表格项目

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

以后可以通过代码删除插件吗?

2 个答案:

答案 0 :(得分:1)

我不这么认为。插件中的init在组件初始化时运行,所以“在代码后面”已经太晚了 - “损坏已经完成”,插件已经挂钩了组件的事件等等。这很酷如果我错了。

答案 1 :(得分:0)

好吧,在功能上可以支持插件取消激活(不确定实际上是否完全删除插件),但大多数插件可能不会这样做,除非他们有一些理由支持它。您应该能够为插件编写覆盖并插入允许您激活/停用其功能的代码。当然取决于特定的插件,但如果插件写得很好,它应该是可重写的。

我的一般方法是:

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

然后您可以根据需要设置pluginInstance.isActive = true/false。请注意,这很简单 - 您的插件可能需要更多工作才能有效覆盖。但这种方法是一个很好的起点。

或者您可能会喜欢并使用插件上的createInterceptor函数来执行类似的操作,而无需复制代码。