我不得不将项目从铁轨搬到角落,这对我来说是个耻辱。
我将如何改变这个
<% 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();
答案 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或声明性的。但根据您的要求,这是一个解决方案。我花了一些时间考虑你是否希望这是动态的,如果没有,为什么甚至没有显示的项目从服务器返回。它们是否在页面的其他地方使用过?