2015-10-15 59 views
2

我做了以下的ng-repeat循環,它效果很好!ng-repeat過濾器爲空循環

<div ng-repeat="einschItem in einschaetzungen.alldata | filter: { savedatum: lolatage[tagarrayindex].tagestring } | orderBy : '-savetimestamp'"> 

現在我要檢查,如果過濾是空的,所以我搜索,發現這個事情應該怎麼解決我的問題。

<div ng-repeat="einschItem in einschaetzungen.alldata = (values | filter: { savedatum: lolatage[tagarrayindex].tagestring } | orderBy : '-savetimestamp')"> 

{{values.length}} 

但是,如果使用此代碼,我不會在循環中得到任何結果,「einschItem」ist爲空。

謝謝!

我使用的角度v1.4.6

回答

3

什麼你可能想在這裏是別名重複的結果。從Angular Documentation

variable in expression as alias_expression - 還可以提供可選別名表達然後將存儲轉發器的中間結果已被應用的過濾器之後。通常,這用於在中繼器上啓用過濾器時呈現特殊消息,但過濾結果集爲空。

例如:item in items | filter:x as results將存儲重複項目的片段作爲結果,但僅在通過過濾器處理項目之後。

請注意,as [variable name]不是運算符,而是ngRepeat微語法的一部分,所以它只能用在最後(而不是運算符,在表達式中)。例如:item in items | filter : x | orderBy : order | limitTo : limit as results

所以你的情況,你可以使用:

<div ng-repeat="einschItem in einschaetzungen.alldata | 
       filter: { savedatum: lolatage[tagarrayindex].tagestring } | 
       orderBy : '-savetimestamp' 
       as filteredItems"> 

{{filteredItems.length}} 

注意,這是在功能上等同於其他問題的答案提供的語法;這只是ngRepeat微語法提供的替代方案。

+0

感謝您的快速和優秀的答案,是的,這是我搜查! – miholzi

1

看起來你在錯誤的地方

你想過濾列表分配到一個值,然後遍歷它valueseinshaetzungen.alldata

<div ng-repeat="einschItem in values = (einschaetzungen.alldata| filter: { savedatum: lolatage[tagarrayindex].tagestring } | orderBy : '-savetimestamp')"> 

{{values.length}} 

Here is a similar example

該版本適用於老版本的角度。對於v1.3.17-beta +,您可以使用Claies答案中提到的alias格式。

<div ng-repeat="einschItem in einschaetzungen.alldata | 
       filter: { savedatum: lolatage[tagarrayindex].tagestring } | 
       orderBy : '-savetimestamp' 
       as filteredItems"> 

{{filteredItems.length}}