我正在使用angular-ui ui-scroll,当我向下滚动时它很棒,不断按预期添加项目。但是当我向上滚动时,它会停在我加载的最后一批的顶部。例如,如果我有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'一样。
提前感谢您提供任何帮助。
答案 0 :(得分:0)
您的数据源看起来不对。检索项目(在您的情况下切片)应基于 datasource.get 方法参数中的 index 和 count 参数。我想发布数据源实现的示例,其中结果项数组的范围从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);
};
希望它有所帮助!