#extjs
#extjs
Вопрос:
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.загрузка запускается дважды, и, следовательно, мои слушатели также привязываются дважды. Таким образом, при изменении окна со списком предупреждение («изменение») приходит дважды. Пожалуйста, скажите, что я делаю не так.
Комментарии:
1. Пожалуйста, используйте тег code для форматирования вашего кода в удобочитаемом виде. Никто не собирается разбираться в этом беспорядке 😉
2. Зачем вам нужно добавлять слушателей таким образом? Вы используете ExtJs3 или 4? пожалуйста, отметьте
3. Я использую Extjs 4. но следует отметить, что success вызывается дважды. Как остановить его от запуска дважды?
Ответ №1:
У меня возникла та же проблема — хотя у меня нет решения типа patch, которое вы могли бы применить к классам Ext, у меня есть (хакерское) решение, которое работает для меня (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
Я ищу исправление для этого (если это проблема), и я обязательно отправлю ответ, если найду его.