我正在尝试加载大量数据,而且需要花费很多时间。 在前端,我显示前5个数据。但我认为我也必须在后端方面。
我想点击按钮然后它会出现接下来的5个对象。在这种情况下,与Angular的前端工作,但我也会在后端站点。
如何发送到后端以加载下一个5个对象(记录)。 提前感谢您的帮助。
Node.js的
router.get('/load', function(req, res) {
Experiences.find({}).lean().exec(function(err, docs_accommo) {
res.send(docs_accommo);
});
});
Angular.js
app.controller('loadData', ['$scope', '$http', '$window', '$upload', '$rootScope',
function($scope, $http, $window, $upload, $rootScope) {
$http.get('/load').success(function(data) {
$scope.datafront = data;
});
$scope.totalDisplayed = 5;
$scope.loadMore = function() {
$scope.totalDisplayed += 5;
};
});
HTML
<div ng-repeat="x in datafront | limitTo:totalDisplayed track by x._id" ng-cloak>
{{x}}
</div>
<button class="btn btn-default" ng-click="loadMore()" style="float:right; margin-bottom:20px;" onClick="nanobar.go(100)">
加载更多
答案 0 :(得分:1)
我通常做这样的事情:
router.get('/load', function(req, res) {
var skip = req.query.skip || 0;
var limit = req.query.limit || 50;
Experiences
.find()
.lean()
.skip(skip)
.limit(limit)
.exec(function(err, docs_accommo) {
res.send(docs_accommo);
});
});
角:
app.controller('loadData', ['$scope', '$http', '$window', '$upload', '$rootScope',
function($scope, $http, $window, $upload, $rootScope) {
$scope.datafront = [];
function loadMore() {
$http.get('/load',
{params: {limit: 5, skip: $scope.datafront.length}})
.success(function(data) {
$scope.datafront = $scope.datafront.concat(data);
});
}
loadMore();
$scope.loadMore = loadMore;
});