2017-05-03 81 views
0

在下面的代码:“23This消失”Angular Moustache评估 - 为什么此代码的行为如此?

<!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> 

我期望看到一个错误或者失败,我会期待我所看到的是“23”。 (注意失踪的“这消失了”)

很明显,胡子没有做直接评估,但实际上在这里发生了什么?

回答

0

2正在转换成字符串,然后与“3”字符串连接,因为您不能将整数与字符串连接起来。

+0

对不起,也许我应该更清楚。问题是指document.getElement ... innerText。 Angular正在做一个评估,但绝对不是评估。令人费解的是它得到了“。”但失败的DOM对象。哪些导致相信整个页面被克隆,或者有其他一些机制可以优雅地失败。 2+“3”= 23并不奇怪。 – user1529413

+0

CSS树将首先被重建: '

' 然后,** $编译器**将与具有空div的DOM一起工作。 – nfproductions

+0

这是准确的吗?我在这里理解的(来自https://docs.angularjs.org/guide/expression)是'{{code}}'不是JavaScript,而是一种新的解释型语言。 – user1529413

相关问题