我看过并且无法找到如何处理AngularJS中基本的Comet概念验证。我正在研究由客户端实现的Comet重复Ajax调用,而不是流式JavaScript。
如果我有服务器端CGI:
#!/bin/bash
echo "Content-type: application/json"
echo ""
echo "'"Hello world at "`/bin/date`"'!'"'"
什么是基本的AngularJS概念验证,它将每秒查询服务器,模数网络延迟等,显示“Hello world!”包括服务器时间?
答案 0 :(得分:0)
The Plunkr
http://plnkr.co/edit/6kpLplq5hy9e2sXMaEsG?p=preview
HTML
<!DOCTYPE html>
<html>
<head>
<script data-require="angular.js@*" data-semver="1.2.15" src="http://code.angularjs.org/1.2.15/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-app="myApp" ng-controller="MyCtrl">
{{data.theDate}}
</body>
</html>
JS
angular.module("myApp", []).service("UpdatingService", function($http, $timeout){
var service = {
data:{},
getData:function(){
$http.get("someData.json").success(function(result){
angular.copy(result, service.data)
service.data.theDate+=" "+new Date();
});
}
};
cancelRefresh = $timeout(function myFunction() {
service.getData();
cancelRefresh = $timeout(myFunction, 1000);
},1000);
return service;
}).controller("MyCtrl", function($scope, UpdatingService){
$scope.data = UpdatingService.data;
});
所以我展示了我一般会如何做到这一点。首先创建一个处理请求和存储数据的服务。然后制作一个控制器并注入所述服务。在服务中从angular注入$ http和$ timeout服务,这样我们就可以发出ajax请求并重复请求,从而轮询服务器。由于没有真正的setInterval,$ timeout回调会创建一个新的$ timeout以继续循环,如果你需要在下面的链接中的某些点详细信息上停止计时器,你可以使用cancelRefresh。