AngularJS - ng-if检查字符串空值

时间:2014-12-09 13:24:26

标签: angularjs

这是一个简单的例子:

<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 != ''条件,即使该值为空。为什么呢?

4 个答案:

答案 0 :(得分:105)

您无需明确使用item.photo == ''item.photo != ''等限定符。与JavaScript一样,空字符串将被评估为false。

您的观点也会更清晰,更易读。

<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

已更新以删除Angular中的错误

答案 1 :(得分:9)

如果您首先在项目上没有照片属性,那么item.photo可能是undefined,因此undefined != ''。但是,如果您提供一些代码来展示如何为item提供价值,那么它会有所帮助。

PS:很抱歉发布这个作为答案(我认为这更像是评论),但我还没有足够的声誉。

答案 2 :(得分:7)

如果“空”表示undefined,则表示解释ng表达式的方式。然后,您可以使用:

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

答案 3 :(得分:0)

这是可能发生的情况,如果item.photo的值未定义,那么item.photo != ''将始终显示为true。而且,如果您从逻辑上认为这确实有意义,则item.photo不是空字符串(因此此条件成立),因为它是undefined

现在,对于尝试检查 Angular 6 中输入值是否为空的人们,可以采用这种方法。

可以说这是输入字段-

<input type="number" id="myTextBox" name="myTextBox"
 [(ngModel)]="response.myTextBox"
            #myTextBox="ngModel">

要检查该字段是否为空,应使用脚本。

<div *ngIf="!myTextBox.value" style="color:red;">
 Your field is empty
</div>

请注意上述答案与该答案之间的细微差别。我在输入名称.value之后添加了一个附加属性myTextBox
我不知道上面的答案是否适用于以上版本的Angular,但是对于 Angular 6 ,这应该是这样做的。