AngularJS:如何加载第一个N个JSON响应,然后在页面渲染后请求rest
AngularJS: How to load first N JSON responses and then request rest after page render
我正在使用Angular从我的Rails服务器请求一个大型JSON响应。默认情况下,模板将只显示响应的前100行。为了加快页面加载,我想请求前100个JSON响应,然后在页面完成加载后请求其余的。
请注意,当前有两个AJAX调用,第一个调用被调用,它的数据被传递给第二个调用。第二个调用是我需要加速的响应,它将显示给用户。
这是我当前的控制器代码:
app.controller('clientCtrl', function($scope, $http, $cookies) {
$scope.clients = [];
getClients()
function getClients(){
return $http.get("http://localhost.com:3001/authenticate.json",
{params:
{token: $cookies.viewing
}})
.success(function(data, status){
return $http.get("http://localhost.com:3001/clients",
{params: {
provider_id: data.user_id,
source: "upload"
}})
.success(function(provider_data, status){
applyRemoteData(provider_data);
});
});
};
function applyRemoteData(newClients) {
$scope.clients = newClients;
}
});
这是我当前的相关模板代码:
<tr ng-repeat='client in clients | limitTo:100'>
<td>{{client.first_name}}</td>
<td>{{client.last_name}}</td>
<td>{{client.email}}</td>
</tr>
如您所见,我过滤了结果并将它们限制为100(至少在最初)。我想请求前100个,这样表就可以加载,然后请求后台剩余的JSON对象(大约20K,大约需要6秒)。
你能提供的任何帮助我都非常感激。
谢谢!
在处理你的请求方面,AngularJS真的没有什么特别的。你所需要做的就是:
- 调整您的Web服务
/clients
调用,使其可以接受范围参数。 - 调整您的客户端代码,以便将此参数与其他参数一起传递。也许你想让它成为一个方法参数,比如
function getClients(max)
。 - 调整getClients结果处理程序回调以合并、替换或附加结果数据。如果你想要超级高效,你应该让它只认证一次。
- 调整初始呼叫通过该参数(
getClients(100)
) -
在没有max(0)的情况下再次调用getClients . setTimeout:
setTimeout(function() { // Now load the rest, but we've drawn the UI by now... getClients(0); }, 250);
你可能还想看看https://github.com/YuzuJS/setImmediate,这是一个很好的替代setTimeout。它使用各种浏览器技巧来获得一个近乎即时的回调,如果你希望它尽可能快。
相关文章:
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- Amazon S3 REST API大小不正确
- Javascript运行php文件,然后下载文件
- 客户端服务器REST API captcha实现
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 弹出窗口出现,然后退出
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 将值输入到对象,然后该对象推送到数组
- 如何临时暂停浏览器渲染,然后恢复整个页面
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 滚动然后捕捉到顶部而不是取消捕捉
- SharePoint 2010 Jquery/JSON Rest Multiple OR语句-如何
- AngularJS加载JSON数据,然后从中解析/加载HTML
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- 使用angularjs中的rest调用通过id获取数据
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- 点击相同的按钮打开模型,然后提交表单
- AngularJS:如何加载第一个N个JSON响应,然后在页面渲染后请求rest
- 使用Angular将请求传递给DJANGO REST api,然后在DJANGO视图中返回这些结果