2014-12-09 53 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:很抱歉發佈這個作爲答案(我寧願它更多的是評論),但我還沒有足夠的聲望呢。