EXTJS 4 データビューを使用していますが、各データ ノードの html 要素 (リンク) にリスナーを追加すると、一貫性のない結果が得られます。データビューに関連付けられているストアのロード リスナーにコードを配置しました。最初のロードでは機能しているように見えますが、いくつかの要素が欠落し始めると、後続のロードが悪化します。store.reload() を呼び出すたびに悪化します。
HTML要素IDが適切にレンダリングされていることをfirebugで確認しましたが、何らかの理由でストアをリロードすると、最初にいくつかの要素が欠落し始め、次にすべての要素が欠落し始めます。以下のロード リスナーのコード:
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);
});
}
}
}
}