Понимание ошибки загрузки локального хоста в Angular JS
Как я могу найти ошибку в следующем отчете об ошибке?
GET http://localhost:8080/img/%7B%7BCurrentPage.img%7D%7D 404 (Not Found) angular.js:2763
r.html angular.js:2763
S.(anonymous function) angular.js:2810
(anonymous function) angular-ui-router.min.js:7
N angular.js:6711
g angular.js:6105
(anonymous function) angular.js:6001
j angular-ui-router.min.js:7
(anonymous function) angular-ui-router.min.js:7
k.$broadcast angular.js:12981
u.transition.L.then.u.transition.u.transition angular-ui-router.min.js:7
F angular.js:11573
(anonymous function) angular.js:11659
k.$eval angular.js:12702
k.$digest angular.js:12514
k.$apply angular.js:12806
h angular.js:8379
u angular.js:8593
z.onreadystatechange angular.js:8532
%7B%7BCurrentPage.img%7D%7D
- это {{CurrentPage.img}}
, который возвращает имя изображения и работает, почему эта ошибка в моей консоли?
Ответы
Ответ 1
Чтобы отключить вашу ошибку:
%7B%7BCurrentPage.img%7D%7D
Ваш источник изображения закодирован в URL, где:
%7B%7B is {{
и
%7D%7D is }}
После загрузки страницы ваш браузер пытается получить изображение, указанное
<img src="{{CurrentPage.img}}">
но angular еще не успел оценить выражение. Затем broswer пытается получить изображение, указанное в исходном тексте "{{CurrentPage.img}}"
, и кодирует его, чтобы вы получили:
<img src="%7B%7BCurrentPage.img%7D%7D">
И не удается получить изображение, указанное этим URL:
http://localhost:8080/%7B%7BCurrentPage.img%7D%7D
Потому что там ничего не существует. Чтобы обойти это, используйте ng-src:
<img ng-src="{{CurrentPage.img}}">
Это предотвращает загрузку изображения браузером до его правильной оценки с помощью angular.
Ответ 2
Эта ошибка возникает, если вы используете img
с атрибутом src
вместо ngSrc
. Вы должны использовать это обозначение:
<img ng-src="CurrentPage.img" alt="" />
Проблема заключается в том, что при использовании синтаксиса src="{{CurrentPage.img}}"
браузер начинает загрузку ресурса, создающего HTTP-запрос, до Angular разрешает привязку и заменяет {{CurrentPage.img}}
фактическим путем:
http://localhost:8080/img/%7B%7BCurrentPage.img%7D%7D
(urlencoded {{CurrentPage.img}}
). Очевидно, что это приведет к ошибке 404.
С другой стороны, атрибут ng-src
не означает ничего для браузера, поэтому он ничего не сделает, пока Angular не будет готов и < Директива i1 > создает атрибут src
с правильным URL.