2015-12-18 12 views
2

我從服務未來的項目列表中的項目:這裏是我的清單:如何組angularJs

[ 
    { 
    "itemCode":"BX0987", 
    "itemId":"001", 
    "date":"2015-12-09T17:03:56.869-06:00", 
    "itemPrice":"$3.24" 
    }, 
    { 
    "itemCode":"BX0986", 
    "itemId":"002", 
    "date":"2015-12-07T17:03:56.869-06:00", 
    "itemPrice":"$5.00" 
    }, 
    { 
    "itemCode":"BX0985", 
    "itemId":"003", 
    "date":"2015-12-16T17:03:56.869-06:00", 
    "itemPrice":"$7.00" 
    }, 
    { 
    "itemCode":"BX0984", 
    "itemId":"004", 
    "date":"2015-12-15T17:03:56.869-06:00", 
    "itemPrice":"$7.00" 
    } 
] 

我想在視圖中顯示:

Current Week 
BX0985 $7.00 
BX0984 $7.00 

Last Week 
BX0987 $3.24 
BX0986 $5.00 

這裏是我的HTML代碼:

<div ng-repeat="itemDate in items = (itemList()| unique:date)"> 
    <div id="itemDate" class="font">{{dateHeader(itemDate.date)}}</div> 
    <div ng-repeat="item in itemList()">  
     <div ng-show="dateHeader(itemDate.date) === dateHEader(item.date)" id="itemRow">  
      <div id="contents">    
       <div id="itemCode" class="font">{{item.itemCode}}</div> 
       <div id="itemPrice" class="font">{{item.itemPrice}}</div>      
      </div>   
     </div>  
    </div> 
</div> 

itemList()是來自服務的數據。 dateHeader()是一個方法來計算日期並返回currentWeek,過去一週,... 但我得到這樣的輸出:

CurrentWeek 
BX0985 $7.00 
BX0984 $7.00 
CurrentWeek 
BX0985 $7.00 
BX0984 $7.00 
LastWeek 
BX0987 $3.24 
BX0986 $5.00 
LastWeek 
BX0987 $3.24 
BX0986 $5.00 

它是重複的每個項目。我如何獲得項目而不重複?

+0

顯示messageList的來源 –

+0

對不起,這是itemList不是messageList。 – hanu

+0

'dateHEader'有一個錯字。另外,使用'ng-if'而不是'ng-show'。 – falsarella

回答

0

我會簡化這個問題。 首先,給數組中的每個obj添加一個屬性,給出一個星期編號。

例如obj.weekNumber = 1

或類似的東西。每次代碼執行時都會計算它。

THEN ...

在角

做一個NG重複的NG-重複內

疊代提供的星期數列表第一...例如[1,2]

然後做迭代內迭代的對象數組在迭代

希望你可以把它從那裏

任何疑問,PLZ問

0
function prepareItemsListForView(items) { 
    var currentWeek = [], lastWeek = []; 
    for (var item in items) { 
     var itemString = item.itemCode + " " + item.itemPrice; 
     if (isCurrentWeek(item.date)) { // use dateHeader manually 
      currentWeek.push(itemString); 
     } else { 
      lastWeek.push(itemString); 
     } 
    } 
    var weeks = {}; 
    // only add non-empty lists 
    if (currentWeek.length > 0) weeks["Current Week"] = currentWeek; 
    if (lastWeek.length > 0) weeks["Last Week"] = lastWeek; 
    return weeks; 
} 

然後在你看來你只是做:

<div ng-repeat="(weekString, week) in weeks"> 
    <div class="font">{{weekString}}</div> <!-- don't use id more than once! --> 
    <div ng-repeat="itemString in week">{{itemString}}</div> 
</div> 

邏輯不應該達到的觀點。