2016-03-06 64 views
0

我有一个ng-repeat数组。 每个对象都有一个名为"checkdate"的属性,它只是一个"New Date()"如何使用angularjs在ng-repeat中通过属性'today'进行过滤?

我希望ng-repeat只显示今天创建的对象。我怎样才能做到这一点?

感谢

+0

这里是你可以做的改变一个字符串到日期并比较对象中的ng-repeat =“obj”ng-if =“Date.parse(obj.checkdate)> = TODAY”'如果这是你的问题。 – Tim

回答

1
$scope.list1 = [ 
    {name: "item1", checkdate: '2016-03-04T09:25:57.882Z'}, 
    {name: "item2", checkdate: '2016-03-05T09:25:57.882Z'}, 
    {name: "item3", checkdate: '2016-03-06T09:25:57.882Z'}]; 

var curDate = new Date(); 
var y = curDate.getFullYear(); 
var m = curDate.getMonth() + 1; 
if (m < 10) { 
    m = '0' + m; 
} 
var d = curDate.getDate(); 
if (d < 10) { 
    d = '0' + d; 
} 
$scope.curDate = y + '-' + m + '-' + d; 

...

<div ng-repeat="item in list1 | filter:{checkdate: curDate}"> 
    {{item.name}} - {{item.checkdate}} 
</div> 
+0

也许我在描述这个时应该更加彻底。 创建新条目时,checkdate字段由“new Date()”填充。但它会以字符串形式保存在数据库中;像这样: 2016-03-04T09:25:57.882Z 所以这个例子不起作用。也许我应该创建一个函数,在日期之后剥离结果并仅比较结果? –

+0

已更新的答案。 –

0

使用以下命令:

ng-repeat="obj in objects" 

和内:

ng-show="obj.date === Date.now()" 

并修改Date.now()根据你的对象的格式日期格式。

here

或者你也可以做到以下几点:

ng-show="checkDate(obj.date)"

其中

checkdate(date){ 
var todaysDate = new Date(); 
//call setHours to take the time out of the comparison 
if(date.setHours(0,0,0,0) == todaysDate.setHours(0,0,0,0)); 
{ 
    return true 
} else { return false} 
} 
+0

我试过这样的http://codepen.io/utrolig/pen/YqwKpW ,但它似乎并没有工作。 –

+0

如果您尝试将其与其他值进行比较,过滤器将无法正常工作 – uksz

相关问题