通过代码删除extjavascript形式的插件?
我有以下表格项目通过代码删除extjavascript形式的插件?,javascript,extjs,Javascript,Extjs,我有以下表格项目 { fieldLabel:'Username' ,id:"username" ,name:'username' ,allowBlank:false ,plugins:[Ext.ux.plugins.RemoteValidator] ,rvOptions: { url:'/registration/member/valid-username' } 以后可以通过代码删除插件吗?我不这么认为init在组件初始化时运行,因此“代码中的后期”为时已晚——“损坏已经完成”,插件
{
fieldLabel:'Username'
,id:"username"
,name:'username'
,allowBlank:false
,plugins:[Ext.ux.plugins.RemoteValidator]
,rvOptions: {
url:'/registration/member/valid-username'
}
以后可以通过代码删除插件吗?我不这么认为<插件中的code>init在组件初始化时运行,因此“代码中的后期”为时已晚——“损坏已经完成”,插件已经连接到组件的事件中,等等。如果我错了,那就太酷了。我不这么认为<插件中的code>init在组件初始化时运行,因此“在代码的后面”已经太晚了-“损坏已经完成”,插件已经连接到组件的事件中,等等。如果我错了,那就太酷了。好吧,从功能上来说,支持插件停用是可能的(不确定是否要完全删除插件),但大多数插件可能不会这样做,除非他们有理由支持它。你应该能够写一个覆盖插件,并插入代码,允许你激活/停用其功能。当然,这取决于特定的插件,但如果插件写得好,它应该是可覆盖的 我的一般做法是:
Ext.override(Ext.ux.plugins.SomePlugin, {
isActive: true,
doSomething: function(){
if(this.isActive){
// copy orig doSomething
}
}
});
然后,您可以根据需要简单地设置pluginInstance.isActive=true/false
。请注意,这太简单了——您的插件可能需要更多的工作才能有效覆盖。但这种方法将是一个很好的起点
或者你也可以在插件上使用
createInterceptor
函数来做类似的事情,而不需要重复代码。好吧,从功能上来说,它可以支持插件停用(不确定是否真的完全删除插件),但大多数插件可能不会这样做,除非他们有理由支持它。你应该能够写一个覆盖插件,并插入代码,允许你激活/停用其功能。当然,这取决于特定的插件,但如果插件写得好,它应该是可覆盖的
我的一般做法是:
Ext.override(Ext.ux.plugins.SomePlugin, {
isActive: true,
doSomething: function(){
if(this.isActive){
// copy orig doSomething
}
}
});
然后,您可以根据需要简单地设置pluginInstance.isActive=true/false
。请注意,这太简单了——您的插件可能需要更多的工作才能有效覆盖。但这种方法将是一个很好的起点
或者你也可以在插件上使用createInterceptor
函数来做类似的事情,而不需要重复代码