2014-01-22 70 views
0

這可能聽起來像一個奇怪的問題(抱歉,Angular是新的),但我需要ng-repeat的功能,但我只需要綁定到單個項目。我目前正在使用一箇中繼器,但過濾陣列到這樣一個項目?單個對象的ng-repeat功能

<div ng-repeat="item in uploader.queue | filter: {fieldName:'design'}"> 
    <div ng-thumb="{ file: item.file, height: 100 }"></div> 
</div> 

此代碼的工作完美,但我不禁想起我不應該在這裏使用一箇中繼器,因爲我」 m只綁定一個項目。

回答

0

Is there a chance your filter will ever cause more than one item to be valid?

如果是,那麼你是什麼這是絕對正確的。

如果不是,那麼你所做的並不一定是錯誤的,因爲你還在採集一個集合。

Will the filtered item will ever be different? In what circumstances does it change?

如果永遠不會改變,那麼你應該在你的控制器過濾數據,僅僅有提供類似$scope.filteredItem到視圖。

+0

因爲我刪除了重複項,所以過濾器只會有一個匹配項。 Uploader是一個由其他人創建的指令,它必須使用一個數組,因爲有很多項目,即使我只對某個特定的「fieldName」感興趣,我想我明白你在控制器上過濾的含義所以我會看看我是否可以解決這個問題。謝謝。 – jonhobbs

1

你可以做類似如下:

{{(uploader.queue | filter:{fieldName: 'design'})[0].file}} 

過濾器返回數組。因此,我們接收返回的數組,然後從第一個條目獲取文件屬性(因爲您只需要第一個條目)。

如果該文件綁定是單向的( 「@」),我懷疑,那麼你可以這樣做:

<div ng-thumb="{file: {{(uploader.queue | filter:{fieldName:'design')[0].file}}, height: 100}"></ng-thumb> 

demo fiddle

+0

那我可以在ng-thumb屬性裏面做嗎? – jonhobbs

+0

更新了一個例子。無論是否需要雙捲曲取決於ng-thumb如何綁定到該屬性。 – KayakDave

+0

這與隊列中不存在此元素時不會出現問題,與問題中包含的原始解決方案不同。 – jelinson