#javascript #methods #jqgrid #callback
#javascript #методы #jqgrid #обратный вызов
Вопрос:
У меня есть объект с методом, который я хочу сделать обратным вызовом в grid. Как я могу это сделать?
Нерабочий пример кода:
var GridHolder = function() {
//...
this.lastSel = null;
//...
};
GridHolder.prototype = {
//...
someAction : function(id){ /*doSomeWork();*/},
rowSelect : function(id){
this.someAction(id); // failed
if(id amp;amp; id !== this.lastSel){
jQuery('#grid_id').restoreRow(this.lastSel);
this.lastSel=id;
}
jQuery('#grid_id').editRow(id, true);
}
//...
};
var gridHolder = new GridHolder();
jQuery('#grid_id').jqGrid({
//...
onSelectRow: gridHolder.rowSelect,
//...
});
На данный момент обратные вызовы вызываются jqGrid с помощью ‘call’, и это заменяет ‘this’ в методах.
Т.е.:
if( $t.p.onSelectRow amp;amp; onsr) { $t.p.onSelectRow.call($t, pt.id , stat); } // this === $t in callback instead of gridHolder
Ответ №1:
var gridHolder = new GridHolder();
jQuery('#grid_id').jqGrid({
//...
onSelectRow: function(id) { gridHolder.rowSelect(id); },
//...
});
должен выполняться в правильном контексте.