这是一个简单的例子:
<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 :(得分: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 ,这应该是这样做的。