2013-07-05 15 views
12

Używam ng-src do ładowania obrazów. Wartość jest ładowany z jakiejś zmiennej zakres, tak:AngularJS nie aktualizuje img src po zmianie modelu

<img ng-src="{{currentReceipt.image}}"/> 

Mój problem jest to, że gdy uruchamiam delete $scope.currentReceipt, to sprawia ng-src atrybut pusty, ale nie odzwierciedla to w atrybucie src. W rezultacie widzę ten obraz, w którym potrzebuję pustego placeholder.

Jak sobie z tym poradzić?

+0

Umieścić go w plunkr –

+0

Możliwy duplikat [pusty ng-src nie aktualizuje image] (http://stackoverflow.com/questions/22092687/empty-ng-src-doesnt-update-image) –

Odpowiedz

22

Jest to oczekiwane zachowanie z dyrektyw ngSrc i ngHref. Te dyrektywy obsługują tylko rozpoznawanie nowych ścieżek, ale gdy ścieżka nie jest dostępna, dyrektywy będą exit silently (widzę tutaj żądanie ściągnięcia).

więc możliwe obejście mogłoby być użycie ngShow wraz z ngHref ukryć tag całkowicie gdy zmienna obraz nie jest już dostępne.

<img ng-href="{{currentReceipt.image}}" ng-show="currentReceipt.image" /> 
+1

+1 za używanie 'ng-show', możesz również rozważyć usunięcie obrazu z DOM z 'ng-switch', jeśli chcesz go całkowicie usunąć. – Terry

+0

Dzięki, wydaje się, że muszę obejść to tak, jak sugerujesz. Zajrzałem do kodu Angular zarządzając ng-src dyrektywą i zauważyłem, że po prostu wychodzi, jeśli nie podano żadnej wartości, nie usuwając istniejącej wartości src lub czegoś podobnego. Zdecydowałem się użyć klasy ng do zarządzania takimi przypadkami. Dzięki! –

+0

Sądzę, że autorzy celowo spowodowali, że dyrektywa właśnie zakończyła działanie, jeśli wartość jest niezdefiniowana, ponieważ usunięcie/usunięcie atrybutu src powoduje, że przeglądarka wyświetla miniaturkę uszkodzonego obrazu, która nie jest naprawdę pożądana. – Stewie

10

wywołanie $ zakres zastosowania $() po kasowania $ zakresu. currentReceipt.

1

Poniżej rozwiązanie działa dla mnie:

<img ng-src="{{currentReceipt.image}}" ng-show="currentReceipt.image != null" /> 
0

Rzeczywiście można sprawdzić długość i zrobić

<img ng-show="user.thumbnail.length > 1" class="img-circle thumb pull-left" ng-src="{{user.thumbnail}}" alt="{{user.firstname}} {{user.lastname}}"> 
Powiązane problemy