2017-05-03 80 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

相關問題