2013-05-20 109 views
6

這工作:爲什麼{{}}在src屬性中不起作用?爲什麼我需要ngSrc?

<a href="{{myAwesomeLink}}">It's a link. A dynamic one, at that.</a> 

但這並不:

<img src="{{URLtoMyPerfectImage}}"> 

一個需要使用ngSrc代替。我可以知道爲什麼會出現這種情況嗎?我有一個類似的問題得到'src'(或者它'href'?我不記得)在Handlebars.js中工作並放棄它(交付壓力)。

這是一個普遍的瀏覽器問題或類似的東西?

回答

13

擴展我上面的答案,而

<a href="{{myAwesomeLink}}">It's a link. A dynamic one, at that.</a> 

的作品,它是不是在使用動態角創建鏈接的最佳實踐。任何時候在錨標籤中使用數據綁定時,都應該使用ng-href指令。因此,對於定位標記代碼應該是這樣的:

<a ng-href="{{myAwesomeLink}}">It's a link. A dynamic one, at that.</a> 

直接從角的文檔:

採用了棱角分明的標記像一個href屬性,使得頁面打開一個錯誤的URL,如果用戶點擊該角度之前的鏈接有機會用實際的URL代替,鏈接將被打破,並很可能會返回404錯誤。 ngHref指令解決了這個問題。

這有助於我們瞭解NG-SRC:因此,與

<img src="{{imgPath}}"> 

瀏覽器嘗試加載圖像,但角度還沒有更換SRC中括號內的表達,所以圖像加載失敗。通過使用

<img ng-src="{{imgPath}}"> 

你告訴瀏覽器等待加載圖像,直到括號內的表達已經被填充,從而加載正確的圖像。

4

documentation提到這個

採用了棱角分明的標記像{{哈希}}在src屬性不起作用 權利:瀏覽器將網址提取與文字文本 {{}哈希}直到Angular替換{{hash}}中的表達式。 ngSrc指令解決了這個問題。

如果你仔細想想,javascript的數據綁定到你的HTML DOM加載HTML之後發生,所以瀏覽器看到INTIAL SRC作爲{{url}},而一個有效的URL字符串和失敗。

相關問題