2014-12-09 54 views
34

这是一个简单的例子:AngularJS - NG-如果检查字符串值为空

<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> 

我看到它总是产生,即使为空值的item.photo != ''条件。为什么?

+0

你的意思是它仍然有'NG-IF = “item.photo!= ''”'属性? – dfsq 2014-12-09 13:28:32

+1

不相关,但是这只是为了更改图像源而看起来像很多重复。 – 2014-12-09 13:32:44

+0

也许'item.photo'不是一个空字符串,而是'null'或'undefined'? – 2014-12-09 13:35:08

回答

84

您不需要明确使用限定符,如item.photo == ''item.photo != ''。就像在JavaScript中一样,一个空字符串将被评估为false。

您的意见将更加清晰和可读。

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/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

+3

虽然简单而干净,但这个答案隐藏了一个小错误,这对你来说可能并不重要。只要看看输入0,n或f中的一个会发生什么。我找不到任何关于它的文档或公开的问题。 – 2015-06-17 11:18:09

+1

是的 - 这是老版本的AnguarJS(1.2.x和之前)的一个问题。它存在于stackexchange托管的版本中。这个bug已经在1.3.0中解决了https://github.com/angular/angular.js/commit/bdfc9c02d021e08babfbc966a007c71b4946d69d – Martin 2015-06-17 11:26:12

+0

yuhu awesome .... – 2016-12-15 10:50:42

7

如果用“空”来表示undefined,这就是ng-expressions被解释的方式。然后,你可以使用:

<a ng-if="!item.photo" href="#/details/{{item.id}}"><img src="/img.jpg" class="img-responsive"></a> 
8

可能是你item.photoundefined,如果你没有对项目中的照片属性摆在首位,因此undefined != ''。但是,如果您将一些代码显示给item提供值,这将有所帮助。 PS:很抱歉发布这个作为答案(我宁愿它更多的是评论),但我还没有足够的声望呢。