编辑:修复//。。。和//下面代码中的错误注释显示了答案
对于JavaScript专家来说,这可能是一件愚蠢而显而易见的事情。。。但如果我能知道这是怎么回事,我会很生气的。
这是我的t.js:
var angularApp = angular.module('myApp', []);
angularApp.controller('mainController', ['$scope', '$http', '$log',
function ($scope, $http, $log) {
$scope.version = angular.version;
var ctime = new Date();
$scope.ctime = ctime.getTime() / 1000;
$http.get('http://127.0.0.1:8765/').then(
function(res){
$scope.stime = res['data']['server-time'] / 1000;
// Fix goes here: $scope.skew = $scope.stime - $scope.ctime;
},
function(error){
$log.warn('Unable to get time');});
// Error here: this happens asynchronously to the $http.get!
$scope.skew = parseFloat($scope.stime) - parseFloat($scope.ctime);
}]);
... 和我的HTML:
<!DOCTYPE html>
<html lang="en-us" data-ng-app="myApp"><head><title>Time Skew</title>
<meta charset="UTF-8">
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" />
</head><body>
<header><nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="/">AngularJS</a></div>
<ul class="nav navbar-nav navbar-right">
<li><a href="#"><i class="fa fa-home"></i>Home</a></li>
</ul></div></nav></header>
<div class="container">
<div data-ng-controller="mainController">
<div class="ng-cloak">Browser time: {{ctime}}</div>
<div class="ng-cloak">Server time: {{stime}}</div>
<div class="ng-cloak">Time skew: {{skew}}</div></div></div>
<script src="//code.angularjs.org/1.4.7/angular.min.js"></script>
<script src="t.js"></script>
</body></html>
...大致显示的是:
Browser time: 1445735550.067
Server time: 1445735550.085
Time skew: NaN
当我运行这个程序时,Chrome浏览器的开发者工具JavaScript控制台上没有显示任何内容。(在本次学习中,我看到了很多其他的错误活动……所以我知道它确实显示了我的语法错误、失败的依赖注入等等——当这些错误存在时)。
我已经尝试过使用和不使用parseFloat()。(同样,对class="ng-斗篷"的调用是相关的...把它们拿出来没有效果,尽管它们也没有按预期工作)。事实上,我从*/1000*(分割)表达式中获得了所需的浮点表示,这表明它们在代码中的这两个点上被视为数字。我尝试删除分割并使用parseInt()而不是parseFloat()。
(虽然我认为这与这个问题无关,但这里是node.js“application”,它提供了这个时间服务:
// tserver.js:
var http = require("http");
http.createServer(function (req, response) {
var headers = {
'Content-Type:': 'application/json',
// Extra headers suggested by http://stackoverflow.com/a/29548846/149076
// ... to resolve: "Control-Allow-Origin' header is present on the requested resource"
// error from Angular.js $http.get() ...
'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
'Access-Control-Allow-Origin': '*'
};
response.writeHead(200, headers);
var d = new Date();
response.end(JSON.stringify({ 'server-time': d.getTime() }));
}).listen("8765");
...尽管很明显,我从我的“服务”中获得了一个有效的整数(或应该解析成整数的字符串)(超文本标记语言中显示的值在几毫秒内与“ctime”的值一致)。
当我发布这个问题时,我发现了许多关于JavaScript NaN结果的其他问题...这些问题似乎都不适用于这里。我甚至尝试添加$scope.tst=parseFloat('12345.97')-parseFloat('12345.67');并将其添加到我的超文本标记语言中,得到了一个完全可预测的数字结果...我实际上使用了这些全长数字,如图所示,以确保这不是数字大小的奇怪问题。我还尝试在$作用域上调用". toString()"。Xtime变量。
那我到底做错了什么?
$http
是异步的,您试图对请求完成之前不存在的变量使用parseFloat
把你的计算放在promise回调中
$http.get('http://127.0.0.1:8765/').then(function (res) {
$scope.stime = res['data']['server-time'] / 1000;
// can do calc here
$scope.skew = parseFloat($scope.stime) - parseFloat($scope.ctime);
},function (error) {
$log.warn('Unable to get time');
});
这是类a的一个函数,我将我的值传递给一个类名,并确认它的寄存器函数。 这是课堂确认。在这门课上,我计划在服务器内部发布数据。url中没有错误。我已经打印了这个代码“System.out.println”(“wei”getPostDataString(postDataParams))我得到了我的价值。但系统显示为空指针。代码的其他部分有错误吗?
问题内容: 我正在使用IText库来促进applet中的pdf导出。在导出调用期间,它失败并显示以下错误: 我在JD Decompiler中打开了Itext jar / PdfPtable.class,并确认该类具有completeRow作为公共方法。 即使在jar / class拥有a的情况下,有人可以解释抛出a的可能情况吗? 这是堆栈跟踪;可能不是很有帮助,因为大多数调用是针对我们的应用程序的
这是我的父类,有两个名为的方法。带有参数的那个在子类中使用。 这是我的子类,在子类的方法中,我使用父类的方法: 当我尝试显示子类的对象时,我得到以下错误: 线程“main”java.lang.StackOverflowError中出现异常
我用的是Android Studio。我编辑了logcat消息,以便只记录要显示的应用程序。但在运行时,我发现logact显示了我的日志和系统日志,如下例所示: 请告诉我为什么logcat仍然显示系统日志
问题内容: public class GuardedBlock { 我正在通过Java Essentials教程学习并发性。找到了守卫的方块并尝试对其进行测试。我无法理解的一件事。 虽然循环是无限的,但是如果您取消注释threadMessage行,则一切正常。为什么? 问题答案: 简短答案 您忘了声明为易失性布尔值。 如果您将字段声明省略为,则不会告诉JVM该字段可以被多线程看到,例如您的示例。
这是我的桌子 我需要在控制台上显示哈里的名字和他45岁的年龄'''