2016-05-27 45 views
1

我看了很多地方,似乎無法找到我要找的東西。這可能很簡單,但我更新角度和似乎無法弄清楚。angularJS ng-repeat與過濾器的日期大於數組中的日期

ne-repeat可以正常工作,但我想過濾掉數值。

我有一個頁面與ng-repeat通過數據(請參閱下面的數據對象),我只想包括數組(日期)中的當前日期>項值。

 vm.newsItems= [ 
     { 
      ID: '1', 
      date: '5/12/2016', 
      newsTitle: 'This is news story header 1', 
      newsText: 'This is news Story Text 1. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' 
     }, 
     { 
      ID: '2', 
      date: '5/30/2016', 
      newsTitle: 'This is news story header 2', 
      newsText: 'This is news Story Text 2. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' 
     } 

頁上的代碼

<div class="box effect8" ng-repeat="newsItem in vm.newsItems"> 
       <h3>{{newsItem.newsTitle}}</h3> 
       {{newsItem.newsText}} 
      </div> 
+0

當前日期我假設你是指今天? –

+0

這可以使用'日期'過濾器完成。但是來自JSON對象的日期參數必須是javascript的日期類型。 – Yogesh

+0

@Yogesh日期過濾器用於格式化「日期」顯示格式,而不是用於過濾數組中的項目 –

回答

3

嘗試添加謂詞與filter $filter對篩選出的項目:

newsItem in vm.newsItems | filter: getItemsFromThePast()

vm.getItemsFromThePast = function(item) { 
    var today = new Date(); 
    return item.date < today; 
} 

我在這裏假定兩件事情:

  • 隨着你的意思new Date()
  • 酒店的對象date是實際Date對象,如果他們的日期格式的字符串你必須將它們轉換爲Date當前日期對象第一
+0

#NexusDuck是的我的意思是新的日期()我更新了我的代碼(並添加了函數來轉換日期),但過濾器函數沒有被調用。我在那裏添加了一個警報,它不會觸發,所以它不會被調用。我包括你所指出的,但由於某種原因,它沒有擊中它。 – Brad

+0

它仍然在工作,意思是對象中的所有項目都顯示出來,所以仍然可以正常工作,只是過濾件永遠不會被調用 – Brad

+0

您能提供一個plunkr/fiddle嗎? –

0

檢查Codepen。這將爲你工作。我已將日期字符串轉換爲Object並將其用於過濾器

var myApp = angular.module('myApp', []); 

myApp.controller('MyController', function ($scope) { 

$scope.newsItems= [ 
    { 
     ID: '1', 
     date: '5/12/2016', 
     newsTitle: 'This is news story header 1', 
     newsText: 'Some text.' 
    }, 
    { 
     ID: '2', 
     date: '5/30/2016', 
     newsTitle: 'This is news story header 2', 
     newsText: 'Some text.' 
    } 
]; 

angular.forEach($scope.newsItems, function(value,key) { 
    value.date = new Date(value.date); 
}); 

$scope.filterDate = function(newsItem) { 
    var today = new Date(); 
    return newsItem.date < today; 
} 

});