我有以下形式的項目通過代碼刪除ext javascript窗體中的插件?
{
fieldLabel:'Username'
,id:"username"
,name:'username'
,allowBlank:false
,plugins:[Ext.ux.plugins.RemoteValidator]
,rvOptions: {
url:'/registration/member/valid-username'
}
是否有可能通過代碼後刪除插件?
我有以下形式的項目通過代碼刪除ext javascript窗體中的插件?
{
fieldLabel:'Username'
,id:"username"
,name:'username'
,allowBlank:false
,plugins:[Ext.ux.plugins.RemoteValidator]
,rvOptions: {
url:'/registration/member/valid-username'
}
是否有可能通過代碼後刪除插件?
我不這麼認爲。插件中的init
在組件初始化時運行,因此「稍後在代碼中」已經太晚了 - 「損壞已經完成」,並且插件已經連接到組件的事件等等。如果我錯了,這將很酷。
嗯,它在功能上可能支持插件停用(不確定是否實際上刪除了插件),但大多數插件可能不會這樣做,除非他們有理由支持它。您應該能夠爲插件編寫覆蓋並插入允許您激活/停用其功能的代碼。當然取決於具體的插件,但如果插件寫得很好,它應該是可覆蓋的。
我一般的做法是這樣的:
Ext.override(Ext.ux.plugins.SomePlugin, {
isActive: true,
doSomething: function(){
if(this.isActive){
// copy orig doSomething
}
}
});
然後,你可以簡單地設置pluginInstance.isActive = true/false
需要。請注意,這很簡單 - 您的插件可能需要更多工作纔能有效覆蓋。但這種方法將是一個很好的開始。
或者你也許可以看到並使用插件上的createInterceptor
函數來做類似的事情而不需要重複代碼。