Ext.define('js.custom.filterbar',{
extend: 'Ext.Component',
alias: 'widget.FilterBar',
onRender: function(){
alert("in onrender filterbar");
var me =this;
me.callParent(arguments);
me.el.load({
url: '/TRIFOLD/jsp/filterBar.jsp',
failure: function (response) {
alert("fail");
},
success: function(response){
Ext.Function.defer(me.addStoreListeners, 50);
}
});
},
addStoreListeners : function(){
Ext.get('store').on({
change: function(){
alert("change");
var floorplanObj = Ext.create('js.custom.floorplan');
floorplanObj.getRequestParameters();
}
});
}
});
在上面的代码中,el.load的成功被触发两次,因此我的监听器也绑定了两次。因此,在更换组合框时,警报(“更改”)会出现两次。请告诉我我做错了什么。
答案 0 :(得分:1)
我一直有同样的问题 - 虽然我没有补丁类型的解决方案你可以申请Ext类,我确实有一个(hacky)解决方案适合我(ExtJS 4.0.7,顺便说一句)
Ext.get('someEl').load({
url: '/some/content.php',
success: function (resultOrEvent){
if(resultOrEvent.hasOwnProperty('request'))
{
// Do your post-load stuff here
}
}
});
我不知道为什么这会发射两次,但它一直很烦人。我在控制台中看到'resultOrEvent'就是这样 - 我第一次得到预期的请求对象,第二次得到Ext.ElementLoader
类型的对象
我正在寻找一个解决此问题的方法(如果这是一个问题),如果找到的话,我一定会回复。