2016-08-02 41 views
0

我有這個NG-重複:如何在ng-repeat中設置變量的值?

<div ng-repeat="row in phs.phrasesView = (phs.phrases | orderBy:phs.phrasesOrderBy[phs.phrasesOrderById].key:phs.phrasesSortDirectionId == 1)" 

    *** 
    *** I want something here to set the value of pos *** 
    *** based on array1.findIndex(v => v.phraseId == 'def') + 1; *** 
    ***       
> 
    <div>{{ phs.phrases[pos].phraseId }} </div> 
    <div>{{ phs.phrases[pos].keyword }} </div> 

我有這樣的數據:

var phs.phrases = [{ 
    "phraseId": "abc", 
    "keyword": "bb", 
    "posId": 1 
}, { 
    "phraseId": "def", 
    "keyword": "bb", 
    "posId": 1 
}, ]; 

我想這樣做的是找到行的位置。我不能使用$索引,因爲我想查找位置並在排序後顯示它。

我知道我可以使用這段代碼找到pos,但是我怎樣才能設置它,所以這段代碼適用於ng-repeat的每一行?

var pos = array1.findIndex(v => v.phraseId == 'def') + 1; 
+1

如果您不是指'$ index',那麼您不清楚「行的位置」是什麼意思。對數組進行排序可更改項目的位置;如果你以某種方式在排序之前存儲了索引,那麼在排序之後顯示該值,這將不是一個有用的值,因爲該項目不再需要在該陣列位置。如果由於某種原因需要每個對象具有固定值,那麼該值將需要是每個對象的屬性。 – Claies

+1

將每個對象的位置存儲在對象內部:'phs.phrases.forEach(function(phrase,index){phrase.position = index + 1;});'或者(效率低得多),調用函數在ng-repeat中的位置:'{{getPositionOf(row)}}' –

+0

@JBNizet - 您能否提出您的解決方案作爲答案。謝謝 –

回答

1

存儲對象本身內部的每個對象的位置:

phs.phrases.forEach(function(phrase, index) { 
    phrase.position = index + 1; 
}); 

或(不過他是效率要低得多),調用一個函數找到NG重複內的位置:

{{ getPositionOf(row) }} 
+0

謝謝。這工作得很好 –