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

Ton*_*ony 49 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>
Run Code Online (Sandbox Code Playgroud)

我发现它总是会生成item.photo != ''条件,即使该值为空.为什么?

Mar*_*tin 112

您不需要显式使用类似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
Run Code Online (Sandbox Code Playgroud)

更新以删除Angular中的错误

  • 虽然简单而干净,但这个答案隐藏了一个小错误,这对你来说可能并不重要.只需观察输入以下值之一时会发生什么:0,n或f.我找不到任何关于它的文档或一个未解决的问题. (5认同)
  • 是的 - 这是旧版AnguarJS(1.2.x及之前版本)的问题.它存在于stackexchange上托管的版本中.此错误已在1.3.0中修复https://github.com/angular/angular.js/commit/bdfc9c02d021e08babfbc966a007c71b4946d69d (2认同)

iul*_*ian 9

如果您首先没有项目的照片属性,那么可能item.photoundefined你的undefined != ''.但是,如果你要提供一些代码来展示你如何提供价值item,那将会有所帮助.

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


n00*_*dl3 7

如果你的意思是"空" undefined,那就是解释ng表达式的方式.然后,您可以使用:

<a ng-if="!item.photo" href="#/details/{{item.id}}"><img src="/img.jpg" class="img-responsive"></a>
Run Code Online (Sandbox Code Playgroud)