c'est un exemple simple:
<a ng-if="item.photo == ''" href="#/details/{{item.id}}"><img src="/img.jpg" class="img-responsive"></a>
<a ng-if="item.photo != ''" href="#/details/{{item.id}}"><img ng-src="/{{item.photo}}" class="img-responsive"></a>
Je vois qu'il génère toujours la condition item.photo != ''
même si la valeur est vide. Pourquoi?
Vous n'avez pas besoin d'utiliser explicitement des qualificateurs tels que item.photo == ''
ou item.photo != ''
. Comme en JavaScript, une chaîne vide sera évaluée comme fausse.
Vos points de vue seront également beaucoup plus propres et lisibles.
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.min.js"></script>
<div ng-app init="item = {photo: ''}">
<div ng-if="item.photo"> show if photo is not empty</div>
<div ng-if="!item.photo"> show if photo is empty</div>
<input type=text ng-model="item.photo" placeholder="photo" />
</div
Mise à jour pour supprimer le bogue dans Angular
Probablement votre item.photo
est undefined
si vous n'avez pas d'attribut photo sur l'élément en premier lieu et donc undefined != ''
. Mais si vous mettiez du code pour montrer comment vous fournissez des valeurs à item
, cela vous aiderait.
PS: Désolé de poster ceci comme réponse (je pense plutôt que c'est plus un commentaire), mais je n'ai pas encore assez de réputation.
Si par "vide" vous voulez dire undefined
, c'est la façon dont les expressions-ng sont interprétées. Ensuite, vous pouvez utiliser:
<a ng-if="!item.photo" href="#/details/{{item.id}}"><img src="/img.jpg" class="img-responsive"></a>
C'est ce qui peut arriver, si la valeur de item.photo
n'est pas définie, alors item.photo != ''
sera toujours indiqué comme étant vrai. Et si vous pensez logiquement que cela a du sens, item.photo
n'est pas une chaîne vide (donc cette condition devient vraie) puisqu'il s'agit de undefined
.
Maintenant, pour les personnes qui essaient de vérifier si la valeur de input est vide ou non dans Angular 6 , on peut utiliser cette approche.
Disons que ceci est le champ de saisie -
<input type="number" id="myTextBox" name="myTextBox"
[(ngModel)]="response.myTextBox"
#myTextBox="ngModel">
Pour vérifier si le champ est vide ou non, cela devrait être le script.
<div *ngIf="!myTextBox.value" style="color:red;">
Your field is empty
</div>
Notez la différence subtile entre la réponse ci-dessus et cette réponse. J'ai ajouté un attribut supplémentaire .value
après mon nom d'entrée myTextBox
.
Je ne sais pas si la réponse ci-dessus a fonctionné pour la version ci-dessus de Angular, mais pour Angular 6 , voici comment procéder.