मुझे पता है यह एक पुराने सवाल है, लेकिन मैं हाल ही में एक पुराने ExtJS (4.0.2) अनुप्रयोग में एक स्क्रॉल समस्या को ठीक करने के लिए किया था और मैं जब एचटीएमएल के लिए एक ट्रिगर/घटना की जरूरत है (जैसे < तालिका > टैग) वास्तव में ग्रिड व्यू में अद्यतन/डाला गया था।
निम्न स्क्रिप्ट Ext.grid.View में नया "अपडेट" ईवेंट जोड़ती है। एचटीएमएल को देखने में डालने के बाद अपडेट इवेंट निकाल दिया गया है।
(function(){
var _setNewTemplate = Ext.grid.View.prototype.setNewTemplate;
Ext.override(Ext.grid.View, {
setNewTemplate: function(){
_setNewTemplate.apply(this, arguments);
var view = this;
var template = this.tpl;
template.overwrite = function(el, values, returnElement){
el = Ext.getDom(el);
el.innerHTML = template.applyTemplate(values);
view.fireEvent("update", view, el); //<--New Event!
return returnElement ? Ext.get(el.firstChild, true) : el.firstChild;
};
template.doInsert = function(where, el, values, returnEl) {
el = Ext.getDom(el);
var newNode = Ext.core.DomHelper.insertHtml(where, el, template.applyTemplate(values));
view.fireEvent("update", view, el); //<--New Event!
return returnEl ? Ext.get(newNode, true) : newNode;
}
}
});
})();
नई घटना का उपयोग करने के लिए, आप बस ग्रिड व्यू में एक नया ईवेंट श्रोता जोड़ें। उदाहरण:
paymentGrid.view.on("update", function(view, el){ //vs paymentGrid.store.on("load", ...
//do something...
console.log(el);
}, this);
ध्यान दें कि यह ExtJS 4.0.2 का उपयोग करके लागू किया गया था। आपको ExtJS के अपने संस्करण के लिए स्क्रिप्ट को अपडेट करने की आवश्यकता हो सकती है।
अद्यतन
मैंने पाया कि नया "अद्यतन" घटना फायरिंग नहीं किया गया था जब एक दृश्य के एक खाली दुकान प्रतिपादन किया गया था। एक कामकाज के रूप में, मैंने दृश्य की रीफ्रेश विधि को बढ़ाया।
(function(){
var _refresh = Ext.grid.View.prototype.refresh;
Ext.override(Ext.grid.View, {
refresh: function() {
_refresh.apply(this, arguments);
var view = this;
var el = view.getTargetEl();
var records = view.store.getRange();
if (records.length < 1) {
view.fireEvent("update", view, el); //<--New Event!
}
}
});
})();
क्या आप एक्स्टजे का उपयोग कर रहे हैं? मुझे लगता है कि आप गलत समस्या से अपनी समस्या को हल करने की कोशिश कर रहे हैं। – sha
मैं ExtJS 4.0.1 का उपयोग कर रहा हूं, धन्यवाद। –