你怎么写“Hello,world!”对于AngularJS中的彗星?

时间:2014-03-28 23:23:14

标签: javascript ajax angularjs comet

我看过并且无法找到如何处理AngularJS中基本的Comet概念验证。我正在研究由客户端实现的Comet重复Ajax调用,而不是流式JavaScript。

如果我有服务器端CGI:

#!/bin/bash
echo "Content-type: application/json"
echo ""
echo "'"Hello world at "`/bin/date`"'!'"'"

什么是基本的AngularJS概念验证,它将每秒查询服务器,模数网络延迟等,显示“Hello world!”包括服务器时间?

1 个答案:

答案 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。

using setInterval in angularjs factory