2010-03-28 17 views
1

我有以下形式的項目通過代碼刪除ext javascript窗體中的插件?

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

是否有可能通過代碼後刪除插件?

回答

1

我不這麼認爲。插件中的init在組件初始化時運行,因此「稍後在代碼中」已經太晚了 - 「損壞已經完成」,並且插件已經連接到組件的事件等等。如果我錯了,這將很酷。

0

嗯,它在功能上可能支持插件停用(不確定是否實際上刪除了插件),但大多數插件可能不會這樣做,除非他們有理由支持它。您應該能夠爲插件編寫覆蓋並插入允許您激活/停用其功能的代碼。當然取決於具體的插件,但如果插件寫得很好,它應該是可覆蓋的。

我一般的做法是這樣的:

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

然後,你可以簡單地設置pluginInstance.isActive = true/false需要。請注意,這很簡單 - 您的插件可能需要更多工作纔能有效覆蓋。但這種方法將是一個很好的開始。

或者你也許可以看到並使用插件上的createInterceptor函數來做類似的事情而不需要重複代碼。