很抱歉,如果这句话用词不正确,很难解释。基本上,我有一个项目列表,在它们旁边有一个指定的日期。如果它们超过30分钟,它们就会变红。工作得很好,但不是实时的。需要刷新它才能看到该项目变为红色。
{{#each callback in App.callbackController}}
<tr>
<td align="center" {{bindAttr style="callback.urgent"}}>{{callback.formatted_time}}</td>
</tr>
{{/each}}
App.Callback = Ember.Object.extend({
date_time: null,
urgent: function()
{
current_time = new Date().getTime();
callback_time = new Date(this.get('date_time')).getTime();
if(((callback_time - current_time) / 1000 / 60 * -1) > 30)
{
return 'color: #FFF; font-weight: bold; background: #'+Helpers.colours.red;
} else {
return 'color: #FFF; font-weight: bold; background: #'+Helpers.colours.green;
}
}.property('date_time')
});
有没有什么办法可以不断刷新紧急值?
发布于 2013-03-12 21:45:44
Richard Livsey写了a wonderful blog post,基本上添加了一个应用程序范围的时钟模型,该模型通过注入连接到所有控制器。然后,您的计算属性可以绑定到时钟属性,并在适当的时间被“唤醒”。
发布于 2013-03-12 17:14:45
您的计算属性仅查看"date_time“属性,在您的示例中,该属性看起来就像是创建项的时间。
您可能应该在应用程序中的某个位置添加"date_time_now“属性(这是有意义的),并将其添加到您的计算属性中。不确定ember是否有内置的"now“属性,但使用setTimeout()设置起来应该不难。
编辑:
重读我的答案,我意识到我没有解释得很好。由于您的计算属性只查看date_time (它永远不会更改),因此它将被计算一次,并在此之后缓存,因为计算属性在默认情况下被缓存。添加date_time_now属性并进行更新,这将在每次更改date_time_now时强制重新计算。
https://stackoverflow.com/questions/15366968
复制相似问题