你怎么写“你好,世界!”对于 AngularJS 中的彗星?
Posted
技术标签:
【中文标题】你怎么写“你好,世界!”对于 AngularJS 中的彗星?【英文标题】:How do you write a "Hello, world!" for Comet in AngularJS? 【发布时间】:2014-05-08 15:01:00 【问题描述】:我已经看过并且无法找到如何在 AngularJS 中处理基本的 Comet 概念验证。我正在查看由客户端重复 Ajax 调用而不是流式处理 javascript 实现的 Comet。
如果我有服务器端 CGI:
#!/bin/bash
echo "Content-type: application/json"
echo ""
echo "'"Hello world at "`/bin/date`"'!'"'"
什么是基本的 AngularJS 概念证明,它将每秒查询服务器,并以网络延迟等为模,显示“Hello world!”包括服务器时间?
【问题讨论】:
不确定您所说的“模网络延迟等”是什么意思,您是否只是在寻找如何从 Angular 进行异步调用的示例? 一个重复的异步调用,是的。在真实网络上,网络延迟和其他条件可能会破坏应用程序的行为,因为它显示服务器时间;我基本上想说,“忽略其他细微差别,如何编写一个 AngularJS Comet 来消耗 CGI 脚本的输出并显示服务器时间?” 【参考方案1】:Plunkr
http://plnkr.co/edit/6kpLplq5hy9e2sXMaEsG?p=preview
<!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
【讨论】:
以上是关于你怎么写“你好,世界!”对于 AngularJS 中的彗星?的主要内容,如果未能解决你的问题,请参考以下文章