2013-11-09 67 views
4

我有一個包含src元素的角度中繼器(表格)。然而,我的網址被稱爲加載的項目前的第一次,造成一個404的負載是這樣的:沒有項目的中繼器中的角度加載img src

http://localhost:9000/%7B%7Bitem.obj.thumbnailurl%7D%7D 404 (Not Found) 

表看起來像這樣(簡化):

<table> 
    <thead> 
     <tr> 
      <th>Item title</th> 
      <th>Link</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr ng-repeat="item in items"> 
      <td>{{item.obj.itemtitle}}</td> 
      <td> 
       <a href="{{item.obj.landingpageurl}}"> 
        <img src="{{item.obj.thumbnailurl}}"/> 
       </a> 
      </td> 
     </tr> 
    </thead> 
</table> 

項目陣列稍後加載,作爲搜索的結果。

每次我打開這個視圖(即使沒有頁面重新加載,只是打開其他視圖),我會得到404錯誤。

這是爲什麼發生?我怎樣才能避免它?

+5

嘗試使用'ng-src'。 – AlwaysALearner

+0

謝謝你們,所有非常有幫助的答案。 – Zlatko

回答

7

由於CodeHater表明,使用ng-src將解決這個問題。問題是在angular編譯了ng-repeat及其內容之前,瀏覽器將{{item.obj.thumbnailurl}}解釋爲真實的src屬性。即使img標籤位於ng-repeat之內,這也是導致您發生一個此類錯誤的原因。當使用ng-src時,angular會在編譯ng-repeat及其內容時將正確的src屬性插入到DOM中。

+0

嗯,我改變了另一張桌子(另一種觀點),但現在我得到這個:http:// localhost:9000/null :(我想我應該把過濾的結果,而不是原始的? – Zlatko

+0

好吧,顯然item.obj。 thumbnailurl的計算結果爲null,很難說沒有看到代碼或數據就會出現問題。 – lex82

2

問題是瀏覽器在解析標籤時立即加載圖像,這是angular有機會用動態值替換它的原因。試試ng-src來解決這個問題。同爲href成立,以避免用戶點擊它角有機會取代{{哈希}}標記,其值之前,嘗試ng-href

1

正如這裏提到的,ng-src解決了這個問題。 無論如何,如果您要動態更改圖像源,請確保爲更好的UX定義默認值,以在代碼定義真實圖像之前顯示一些加載程序圖像。