Подкласс DataSource и переопределите метод sendRequest, чтобы вы вызывали переданный обратный вызов с вашим собственным отфильтрованным набором результатов в качестве аргумента results
.
filterDataSource=function(arg) {
filterDataSource.superclass.constructor.call(this,arg);
}
YAHOO.extend(filterDataSource,YAHOO.util.XHRDataSource);
filterDataSource.prototype.sendRequest=function(request, callback) {
var wrapCallBack=function (request,results,error) {
// !!! do filtering on results here !!!
callback.success.call(this,request,results,error);
};
filterDataSource.superclass.sendRequest.call(this,request, {
success: wrapCallBack, argument: callback.argument
});
}
И сделайте ваш myDataSource
a new filterDataSource
вместо new Yahoo.util.DataSource
.
Отказ от ответственности: этот код, вероятно, не работает так, как написано;Я вырвал его из какого-то старого рабочего кода и, скорее всего, пропустил какой-то критический фрагмент.Тем не менее, я надеюсь, что это передает основную идею.