2015-09-28 83 views
1

我有模型是這樣的:過濾模型angularjs

{ 
    "TaskDate": "2015-01-04T00:00:00", 
    "TimesheetList": [ 
     { 
      "WorkItemId":24, 
      "ProjectId":3, 
      "ProjectName":"Hello world", 
      "UserId":12, 
      "UserName":"Anatoliy Svetliakov", 
      "Date":"2015-01-04T22:00:00", 
      "Task":"#34 : New task test", 
      "TimeWorked":2, 
      "Note":null, 
      "InProgress":false 
     } 
    ] 
} 

該數據顯示在與無限滾動表。我需要創建自定義過濾器,這將過濾數據Name和/或Data(from-to)。請給我一個想法如何做到這一點。我創建了函數,但它不起作用。

.filter('tsFilter', function() { 
       return function(model, filter) { 
        var filtered = []; 
        if (model != null) { 
         for (var i = 0; i < model.length; i++) { 
          filtered[i] = model[i]; 
         } 
        } 

        if (filter != null) { 
         if (filter.UserId != null) { 
          for (i = 0; i < filtered.length; i++) { 
           for (var j = 0; j < filtered[i]['List'].length; j++) { 
            if (filtered[i].List[j].UserId != filter.UserId) { 
             filtered.splice(j, 1); 
             j--; 
            } 
           } 
          } 
         } 
        } 

        for (i = 0; i < filtered.length; i++) { 
         if (filtered[i].List.length == 0) { 
          filtered.splice(i, 1); 
          i--; 
         } 
        } 
        return filtered; 
       }; 
      }) 

第67頁上顯示爲:

<div class="timesheet-table-container"> 
    <table class="table-timesheet" id="table-body" infinite-scroll-immediate-check="false" infinite-scroll="loadMore()" infinite-scroll-distance="1"> 
     <tbody ng-repeat="item in model | tsFilter: filter | limitTo: limits track by $index"> 
      <tr class="timesheet-day-block"> 
       <td colspan="6"> 
        <span class="timesheet-date">{{item.TaskDate | dateFilter}}</span> 
       </td> 
      </tr> 

      <tr class="timesheet-table-rows" ng-repeat="list in item.List" ng-form="logged"> 
       <td>{{list.ProjectName}}</td> 
       <td>{{list.UserName}}</td> 
       <td>{{list.Date | date: 'dd/MM/yyyy'}}</td> 
       <td>{{list.Task}}</td> 
       <td>{{list.TimeWorked}}</td> 
       <td> 
        <span style="width: 85%">{{list.Note}}</span> 
        <button class="active-delete-button" ng-click="removeTask(list)" style="display: inline-block; float:right">вњ–</button> 
       </td> 
      </tr> 
     </tbody> 
    </table> 
</div> 
+3

不是答案..但是如果您通過傳遞過濾器參數來過濾服務器上的數據,而不是在客戶端上進行過濾,那麼它的性能會更好。 – harishr

回答

1
+0

這很好,但它僅適用於UserId或Date過濾器。我需要過濾UserId或日期和用戶ID和日期 – HUSTLIN

+0

@HUSTLIN:我已經更新了,對不起我的壞..現在嘗試,讓我知道。 –

+0

是的,它的工作,謝謝!) 什麼是服務davilmaycode? – HUSTLIN