Я работаю с данным dataview EXTJS 4 и имеет несогласованные результаты при добавлении слушателей в элементы html (ссылки) в каждом узле данных. Я поместил код в загрузчик в хранилище, привязанный к dataview. Похоже, что он работает с первой загрузкой, но последующие нагрузки ухудшаются, так как он начинает пропускать некоторые элементы. Каждый раз при вызове store.reload() он становится хуже.EXTJS 4: Добавление слушателей к элементам несовместимым
Я проверил в firebug, что идентификаторы элемента html правильно отображаются, но по какой-то причине, когда я перезагружаю хранилище, он сначала начинает пропускать некоторые элементы, а затем все элементы. Код для слушателя нагрузки ниже:
listeners: {
load: function(store, records, successful, options){
var nodes = records;
for (i=0, len = nodes.length; i < len;i++){
var id = nodes[i].data.id;
var addtocartel = Ext.get('img-cart-'+id);
var viewel = Ext.get('img-view-'+id);
//Setting hidden class for nonimage items
switch (nodes[i].data.type) {
case 'image' :
viewel.addCls('imgprf');
addtocartel.addCls('cartprf');
break;
default :
viewel.addCls('sc_hidden');
addtocartel.addCls('sc_hidden');
viewel.hide();
addtocartel.hide();
break;
}
if(addtocartel !== null){
addtocartel.itemid = id;
addtocartel.on('click', function(e,t){
var el = Ext.get(t);
var imgrec = imagestore.getById(el.itemid);
e.stopEvent();
prfproductwindow.show();
});
}
if(viewel !== null){
viewel.itemid = id;
viewel.on('click', function(e,t){
var el = Ext.get(t);
var imgrec = imagestore.getById(el.itemid);
});
}
}
}
}
Благодарим за информацию! Я обновил свою логику, чтобы настроить классы css в шаблоне представления данных. Я читал о делегатах, но я не уверен, как добавить обработчики кликов для нескольких классов CSS. Для каждого узла в моем dataview у меня есть 3 разных обработчика кликов прямо сейчас, в зависимости от того, какой элемент щелкнул. Могу ли я выполнить это, выполнив то, что вы предложили? Благодаря! –
@TimSchoch. Вы должны иметь возможность добавить 3 вида прослушивателей кликов в представлении el, каждый из которых имеет делегат, который выбирает определенный класс узлов. Я не помню, если бы у селекторов делегатов могли быть запятые (что позволило бы вам иметь одного слушателя для всех трех типов узлов), но даже если бы это работало, вам все равно пришлось бы различать, какой тип узла получил щелчок в обработчике. Добавление 3 отдельных прослушивателей кликов к виду не является большим делом и, конечно же, предпочтительнее добавлять 3 клика для каждой строки для каждого рендеринга. – wantok