Angularjs 角胡子评估-为什么这段代码会这样?
在以下代码中:Angularjs 角胡子评估-为什么这段代码会这样?,angularjs,Angularjs,在以下代码中: <!doctype html> <html lang="en" ng-app> <head> <meta charset="utf-8"> <title>My HTML File</title> <link rel="stylesheet" href="bower_componen
<!doctype html>
<html lang="en" ng-app>
<head>
<meta charset="utf-8">
<title>My HTML File</title>
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css" />
<script src="bower_components/angular/angular.js"></script>
</head>
<body>
<div id="div1" style="display:none;">This disappears</div>
<p>Nothing here {{2 + "3" + document.getElementById("div1").innerText + "." }}</p>
</body>
</html>
我的HTML文件
这消失了
这里没有任何内容{{2+“3”+document.getElementById(“div1”).innerText+“}
我希望看到一个错误或失败,我希望看到“23这消失了”。我看到的是“23”。(注意缺少的“这消失了”)
很明显,小胡子并没有进行直接计算,但实际上是怎么回事?2被转换成一个字符串,然后与“3”字符串连接起来,因为不能将整数与字符串连接起来 AngularJS表达式是类似JavaScript的代码片段,由AngularJS在当前模型范围的上下文中计算,而不是在全局上下文(窗口)的范围内
对不起,也许我应该说得更清楚些。问题是指document.getElement…innerText。Angular正在进行评估,但绝对不是评估。令人费解的是,它获得了“.”,但未能获得DOM对象。这导致人们相信整个页面正在被克隆,或者有其他一些机制可以正常地失败。2+“3”=23并不奇怪。CSS树将首先重建:
这将消失
,然后$compiler将处理具有空div的DOM。这准确吗?我现在(从中)了解到,{{code}}
不是JavaScript,而是一种新的解释语言。