Tôi đang sử dụng md-virtual-repeat
chỉ thị Angular Material
để cuộn vô hạn và tôi cần thay thế chức năng thời gian chờ là demo $ với yêu cầu $ http. Nhưng tôi không thể giải quyết đúng. Trong mã bên dưới, cuộn vô hạn hoạt động tốt nhưng không hiển thị dữ liệu từ yêu cầu http. Vấn đề là tôi không biết cách kết nối $ http với infiniteItems.
Here là bộ tách.
index.html
<body ng-app="infiniteScrolling" class="virtualRepeatdemoInfiniteScroll">
<div ng-controller="AppCtrl as ctrl" ng-cloak>
<md-content layout="column">
<md-virtual-repeat-container id="vertical-container" flex>
<div md-virtual-repeat="item in ctrl.infiniteItems" md-on-demand
class="repeated-item" flex>
{{item.id}}
</div>
</md-virtual-repeat-container>
</md-content>
</div>
</body>
JS:
(function() {
'use strict';
angular
.module('infiniteScrolling', ['ngMaterial'])
.controller('AppCtrl', function ($timeout,$scope,$http) {
this.infiniteItems = {
numLoaded_: 0,
toLoad_: 0,
items:[],
getItemAtIndex: function (index) {
if (index > this.numLoaded_) {
this.fetchMoreItems_(index);
return null;
}
return index;
},
getLength: function() {
return this.numLoaded_ + 5;
},
fetchMoreItems_: function (index) {
if (this.toLoad_ < index) {
this.toLoad_ += 20;
$http.get('items.json').success(function (data) {
var items = data;
for (var i = 0; i < items.length; i++) {
this.items.push(items[i].data);
}
this.numLoaded_ = this.toLoad_;
}.bind(this));
}
}
};
});
})();
Cảm ơn bạn, Nó hoạt động. Nhưng tôi không biết tại sao cho toLoad _ + = 20, khi tôi đi xuống cuộn các dữ liệu tải với một sự chậm trễ lớn, rất xuống không bao giờ tải không giống nhau cho toLoad _ + = 10. –
Vâng, thực sự nó tạo ra phần tử trong DOM nhưng vì api của bạn trả về 5 phần tử, iirc, nó không có đủ dữ liệu để khởi tạo, vì vậy chúng trống/trống. –
Cảm ơn, bạn đã đúng. Tôi chỉ muốn thêm một điểm nữa: Tôi nghĩ rằng thay thế 'dữ liệu' bằng' obj.data' không phải là một phần của giải pháp khi tôi đang sử dụng 'success' thay vì' then' và nó trả về dữ liệu không kết quả, nhưng sử dụng 'concat 'là một phần của giải pháp. Bởi vì khi tôi xóa mã không hoạt động chính xác. Nó có một nhược điểm khi nó lưu trữ tất cả dữ liệu (tất cả các dữ liệu ngoài xem) trong bộ nhớ không chỉ dữ liệu trong xem. –