2017-10-11 68 views
0

我一直在嘗試使用HTML實體,以避免角度作出有約束力的,當明文命中{{}}如何顯示與角

所以我發現,瀏覽器將其轉換爲純彎曲的大括號反正雙花括號。這裏是簡單的例子。正如您在DOM檢查器中所看到的,HTML實體代碼已轉換爲簡單的彎曲大括號。它在某處指定了嗎?

https://codepen.io/anon/pen/OxEeqg

<body> 
    &#123;&#123;1+2&#125;&#125; 
</body> 

UPD:Chrome和FF的行爲在這種情況下類似。

+0

這是預期的行爲。如果你想直接顯示你的代碼,你必須把'&'變成一個實體:'&#123; &#123; 1 + 2 &#125; &#125;' – tobiv

+0

不,我說的不是顯示。 DOM中的HTML本身已被轉換。我希望它被顯示爲彎曲的大括號,但不能被Angular表達式解析器識別。因爲我不得不在前兩個括號之間插入ZWSP,但我仍然好奇爲什麼'{'被轉換爲'{'*在HTML源代碼* –

回答

2

使用ng-non-bindable指令的包裝元素:

<span ng-non-bindable>{{1+2}}</span> 

如果你使用它的容器元素上,你也可以忽略屬性:

<div ng-non-bindable> 
    <input value="{{example}}"> 
</div> 
+0

中。不幸的是,相同的元素具有屬性,我確實需要綁定並且它的下降具有它們太。但最重要的是它實際上是XSS,我不想通過列入黑名單來阻止XSS。無論我是否忘記添加'ng-non-bindable',我都希望解決方案能夠在任何地方工作。所以我加入了保存到數據庫的鉤子,並認爲它工作正常,直到我發現用HTML實體替換彎曲的大括號不起作用,因爲瀏覽器將它們替換回來。 –