Javascript 从服务器端NodeJ到angularjs获取有限的json响应
我从node.js服务器得到这个json响应 我使用angularjs ng repeat函数在我的前端显示它。 当响应包含阵列中超过100000个对象时,浏览器将挂起 所以我想先得到数组中的三个对象 但我再次将此响应发送回服务器端 所以我想发送所有数据 来自服务器端的我的json响应:Javascript 从服务器端NodeJ到angularjs获取有限的json响应,javascript,arrays,angularjs,json,node.js,Javascript,Arrays,Angularjs,Json,Node.js,我从node.js服务器得到这个json响应 我使用angularjs ng repeat函数在我的前端显示它。 当响应包含阵列中超过100000个对象时,浏览器将挂起 所以我想先得到数组中的三个对象 但我再次将此响应发送回服务器端 所以我想发送所有数据 来自服务器端的我的json响应: [ { field5: 'Chennai', field6: 'Asia', field7: '600091', field8: '10-10-1996'}, { field5: 'Ta
[ {
field5: 'Chennai',
field6: 'Asia',
field7: '600091',
field8: '10-10-1996'},
{
field5: 'Tamilnadu',
field6: 'Asia',
field7: '600091',
field8: '10-10-1996' },
{
field5: 'Tuticorin',
field6: 'Asia',
field7: '600091',
field8: '10-10-1996' },
{
field5: 'Japan',
field6: 'Asia',
field7: '600091',
field8: '10-10-1996'},
{
field5: 'China',
field6: 'Asia',
field7: '600091',
field8: '10-10-1996' },
{
field5: 'Canada',
field6: 'Asia',
field7: '600091',
field8: '10-10-1996' },
{
field5: 'Canada',
field6: 'Asia',
field7: '600091',
field8: '10-10-1996'} ]
My controller.js:
正在将服务器端数据获取到angularjs:
$http({
method: 'GET',
url: '/api/getnewgroup'
}).then(function (response) {
$scope.excels = response.data;
}, function (response) {
window.location.href = '/';
});
我上次从客户端向服务器发送数据的api:
$scope.uploadLast = function () {
var data = {
excels: $scope.excels,
};
$http.post('/api/uploadlast', data).then(function (response) {
}).catch(function (response) {
alert(response.data);
console.log(response);
});
}
在ng repeat中,您可以使用“limito”过滤器,如下所示:
ng-repeat="excel in excels | limitTo:3"
这将仅显示数组的前3个条目
如果要为显示的项目创建另一个数组,可以尝试:
$http({
method: 'GET',
url: '/api/getnewgroup'
}).then(function (response) {
$scope.excels = response.data.slice(0, 3);
$scope.remainingExcels = response.data.slice(3);
}, function (response) {
window.location.href = '/';
});
及
但这是一件非常“丑陋”的事情。您的服务器已经有了数据(它正在发送到前端)。为什么需要从前端发回?您可以在后端本身访问相同的数据。我正在项目中更改某种形式的内容,并将某种形式的已编辑对象发送回去。好的。在这种情况下,您需要使用分页。用户将只能编辑您显示的数据。因此,如果显示3行,则将更新后的3行发回,并更新后端中的完整数据。这是否可以使用splice方法实现?我正在更改某些形式的内容,这意味着我只是从客户端在json中添加一个对象,然后发送该对象。Limit只会在UI中隐藏json对象,但它们几乎从服务器端获取所有数据。@MohamedSameer所以请更清楚地了解您想要做什么,无需否决我的答案。您希望如何在不从后端获取数据的情况下将所有数据放在前端?您的问题不是javascript或角度相关的问题,而是后端问题。@MohamedSameer用另一个建议编辑了它。@MohamedSameer如果我的建议有效,请不要忘记将其标记为已接受的答案,以帮助将来有同样问题的用户:)
$scope.uploadLast = function () {
var data = {
excels: $scope.excels.concat($scope.remainingExcels),
};
$http.post('/api/uploadlast', data).then(function (response) {
}).catch(function (response) {
alert(response.data);
console.log(response);
});
}