日期大于Angular中的当前时间

时间:2015-11-05 14:31:27

标签: angularjs

我不得不将项目从铁轨搬到角落,这对我来说是个耻辱。

我将如何改变这个

<% if souporder.datefrom > Time.now %>

成角度条款?

继承我的代码

<tr ng-repeat="soup in souporders">
               <td>{{soup.id}}</td>
               <td>{{soup.soup}}</td>
               <td>{{soup.datefrom}}</td>
               <td>{{soup.dateto}}</td>
             </tr>

修改 这是我认为的

         <div ng-repeat="soup in souporders">
         <tr ng-if="date == soup.datefrom">

这是在我的控制器中

$scope.date = new Date();

1 个答案:

答案 0 :(得分:1)

您在评论中澄清说,您只需要在页面刷新时计算,这非常简单,并且不需要太多角度魔法。

在初始化视图的控制器时,只需设置一个变量,无论订单日期是否在将来,并在范围上公开它。然后直接绑定到它,并使用bindonce功能{{:myvariable}}来提高性能,因为它无论如何都不会改变。

根据您的需要,您甚至可以让服务器计算该值并将其作为JSON订单数组中每个订单的属性返回。 (我猜你正在做什么,但如果你没做我认为你正在做的事情,你可以调整答案。)

更新:我刚刚意识到,您的目标可能不是根据日期对每一行做一些特别的事情,而是根据日期过滤列表。我的大部分答案仍然存在,但你可以忘记绑定灵魂。您需要的是ng-repeat上的角度过滤器,并使用管道(|)字符完成。您可以通过搜索主题阅读所有相关内容。 angularjs文档中有一些例子。但基本上,而不是:

<tr ng-repeat="soup in souporders">
    <td>{{soup.id}}</td>
    <td>{{soup.soup}}</td>
    <td>{{soup.datefrom}}</td>
    <td>{{soup.dateto}}</td>
    <td>{{:soup.active}}</>  <!--do something nice here instead of just displaying true/false --->
</tr>

你可能想要:

<tr ng-repeat="soup in souporders | filter:{current: true}">
    ...etc
</tr>

无论是在服务器上还是在客户端上,当您从服务器加载数据时,您都可以在souporders数组中的项目中添加一个布尔属性,以指示它是否是当前的。

这实现了什么:

您有一个基于属性的过滤项目列表,该属性不会动态更改并需要重新加载页面才能更新。但它速度很快(但如果真的需要疯狂的话,速度可能不是最快的 - 不要过早地优化,你会知道在什么时候做什么,现在时间不是这样)。< / p>

为什么不那么好:

它不是动态的,它不是角度y或声明性的。但根据您的要求,这是一个解决方案。我花了一些时间考虑你是否希望这是动态的,如果没有,为什么甚至没有显示的项目从服务器返回。它们是否在页面的其他地方使用过?