Angular-ui ui-scroll - как заставить работать при прокрутке вверх?
Я использую угловую-UI-UI-прокрутки, и это здорово, когда я прокручиваю вниз, продолжает добавлять элементы, как и ожидалось. Однако, когда я прокручиваю вверх, он останавливается в верхней части последней загруженной партии. Например, если у меня есть 100 элементов, а размер буфера равен 10, и я прокрутил вниз, чтобы отображались элементы 61-70, а при прокрутке вверх я хочу увидеть элементы 51-60. Однако я не могу прокрутить мимо пункта 61. Я не знаю, что я делаю неправильно.
Вот HTML:
<div row="row" ui-scroll="row in transactionSource" buffer-size="10" >{{row.data}}</sq-transaction>
Вот сценарий:
$scope.transactionSource = {
get: function (index, count, callback) {
if (index < 0) {
callback([])
}
else {
var buffer = 10;
var end = ctrl.nextIndex + buffer;
if (end > ctrl.transactions.length) end = ctrl.transactions.length;
var items = ctrl.transactions.slice(ctrl.nextIndex, end);
ctrl.nextIndex = end;
callback(items);
}
}
};
Если это связано, то, когда я console.log получаю значения индекса и числа, после первой загрузки 10 я получаю индекс -9 (в этом случае я возвращаю пустой массив - если я не делаю этого, весь массив загружается). Когда я прокручиваю вверх, я вообще не получаю сообщения console.log, так что это похоже на то, что 'get' вызывается только при прокрутке вниз.
Заранее спасибо за любую помощь.
1 ответ
Ваш источник данных выглядит неправильно. Поиск элементов (нарезка в вашем случае) должен основываться на параметрах index и count, которые вы указали в аргументах метода datasource.get. Я хотел бы опубликовать пример реализации источника данных, где массив результирующих элементов ограничен от 0 до 100 и должен быть вырезан из некоторого внешнего массива данных:
get: function(index, count, success) {
var result = [];
var start = Math.max(0, index);
var end = Math.min(index + count - 1, 100);
if (start <= end) {
result = externalDataArray.slice(start, end + 1);
}
success(result);
};
Надеюсь, поможет!