Я признаю, что это не идеальное решение, и этот вопрос немного устарел, но этот код довольно хорошо сработал для меня в этом месте:
Ext.override(Ext.tree.TreeLoader, {
requestData : function(node, callback, scope) {
var originalDataUrl = this.dataUrl;
this.dataUrl += "/" + this.getParams(node).node;
if(this.fireEvent("beforeload", this, node, callback) !== false){
if(this.directFn){
var args = this.getParams(node);
args.push(this.processDirectResponse.createDelegate(this, [{callback: callback, node: node, scope: scope}], true));
this.directFn.apply(window, args);
}else{
this.transId = Ext.Ajax.request({
method:this.requestMethod,
url: this.dataUrl||this.url,
success: this.handleResponse,
failure: this.handleFailure,
scope: this,
argument: {callback: callback, node: node, scope: scope}
//params: this.getParams(node)
});
}
}else{
// if the load is cancelled, make sure we notify
// the node that we are done
this.runCallback(callback, scope || node, []);
}
this.dataUrl = originalDataUrl;
}
});
Действительно, единственный большой недостатокэто полное отсутствие параметров, когда вы идете по этой дороге.В моем случае мне нужен был только идентификатор узла.Но это должно по крайней мере дать вам хорошую отправную точку, если вы хотите переопределить свой метод загрузки!:)