2013-04-25 14 views
7

Ho un elemento immagine che sta ottenendo il suo percorso da un attributo che ho sul mio oggetto angolare. Tuttavia se questo (imagePath) è vuoto, ho un'immagine spezzata. Mi piacerebbe non rendere l'immagine se l'attributo è vuoto, ma non vedo un modo per farlo. Qualche idea?Nascondi elemento se l'attributo angolare è vuoto

<img width="50px" src="/resources/img/products/{{current.manufacturerImage.imagePath}}"> 
+0

real iif: http://stackoverflow.com/questions/14164371/inline-conditionals-in-angular-js/14165488#14165488 – bresleveloper

risposta

20

Si desidera verificare la direttiva ngHide.

Quindi il tuo codice sarebbe simile a qualcosa.

<img width="50px" ng-hide="current.manufacturerImage.imagePath == ''" 
src="/resources/img/products/{{current.manufacturerImage.imagePath}}"> 

In alternativa, si potrebbe anche provare il suggerimento di darkporter

<img width="50px" ng-show="current.manufacturerImage.imagePath" 
src="/resources/img/products/{{current.manufacturerImage.imagePath}}"> 

Si potrebbe anche aggiornare questo per verificare se l'oggetto è null o undefined poi nascondere l'elemento.

+9

Abbastanza sicuro che ng-hide/show non ha bisogno di valori booleani appropriati e può usare la verità. Farei 'ng-show =" current.manufacturerImage.imagePath "' – jpsimons

+1

@darkporter, sii prudente con questo approccio con qualsiasi valore che può essere 0 anche se, come un ID, in quanto questo potrebbe essere analizzato erroneamente come falsa. – adamdport

0

Questo suggerimento non funzionerebbe per me perché stavo generando i miei collegamenti immagine in base al ruolo degli utenti. L'utente aveva un ruolo, ma ciò non significava che avessero un'immagine associata ad esso.

così ho creato una direttiva:

angular.module('hideEmptyImages', []) 
.directive('hideEmptyImage',function() { 
    return { 
     Restrict: 'AE', 
     Link: function (scope, elem, attrs) { 
      elem.error(function() { 
       elem.hide(); 
      }); 
     } 
    }; 
}); 

Quindi:

<img hide-empty-image width="50px" src="/resources/img/products/{{current.manufacturerImage.imagePath}}"> 

non mostrerà se il .imagePath è vuoto o se semplicemente non è un'immagine associata.