Запросы на получение изображений с помощью AngularJS

106

Я сохраняю исходную строку изображения, которое будет отображаться в HTML, в контроллере AngularJS, однако оно дает 404 до инициализации контроллера Angular.

Вот HTML:

 <div ng-controller="Cont">
      <img src="{{imageSource}}">
 </div>

Угловой контроллер:

 var Cont = function($scope) {
      $scope.imageSource = '/tests.png';
 }

И ошибка, которую я получаю ( %7D%7Dсоответствует {{в шаблоне).

 GET https://localhost:9000/%7B%7BimageSource%7D%7D 404 (Not Found) 

Как я могу предотвратить это? То есть загружать изображение только после инициализации контроллера Angular?

SSB
источник

Ответы:

230

Попробуйте заменить свой src на ng-src для получения дополнительной информации см. Документацию :

Использование разметки Angular, например {{hash}} в атрибуте src, работает неправильно: браузер будет извлекать из URL-адреса буквальный текст {{hash}}, пока Angular не заменит выражение внутри {{hash}}. Директива ngSrc решает эту проблему.

 <div ng-controller="Cont">
      <img ng-src="{{imageSource}}">
 </div>
Gloopy
источник
2
Лучше использовать data-ng-controller и data-ng-src, чтобы HTML был действительным.
Juampy NR
6

Если кто-то ищет решение для стилизации фонового изображения, используйте это:

<div ng-style="{'background-image': 'url({{ image.source }})'}">...</div>
Сайед
источник
Использование интерполяции с ngStyle - плохая практика. Ссылка: docs.angularjs.org/api/ng/directive/ngStyle
Абдул Рауф