我有一个具有getDate()
getter方法的模型。
在控制器中,我定义了一个名为timeAgoUtil
的实用程序类,它计算自该Date值以来的时间,例如:6 hours ago
。
现在我每次想要在屏幕上获取值时都需要访问该实用程序方法,这是非常多的。大部分时间都在列表中的对象上,这需要我遍历它以获得每次前面的值。
我的方法:
timeAgoUtil
实用程序类。getTimeAgo()
的模型创建了一个新的getter方法。return timeAgoUtil.convert(this.date);
。在getter中重新调整结果之前是否操作结果并在模型常用中定义实用程序类?
答案 0 :(得分:1)
不,不是。
Getters理想情况下应仅返回数据,不应包含任何业务逻辑。这是一般方法和最佳实践。
你现在正在做的不是正确的方法,尽管它会起作用。
最好的方法/实践是定义一个Utility类,并在其中定义计算时间的方法。模型不应包含除setter,getters和构造函数之外的任何其他方法,如果需要,则不包含equals和hashcode。
答案 1 :(得分:0)
根据您提供的信息,您似乎正在使用getDate()方法获取对象的日期并计算自该日期以来经过了多长时间。在我看来,你不应该在后端做到这一点。
我的建议是在前端使用普通的js或像angular
这样的框架修改强>
如上所述here,您可以使用Stack Exchange网站使用的内容来创建这些时间字符串。有一个名为timeago
的jQuery插件使用该插件非常简单,它可以自动清理和更新。
这是一个快速示例(来自插件的主页):
// Now, let's attach it to your timestamps on DOM ready:
// This will turn all abbr elements with a class of timeago and an ISO 8601 timestamp in the title:
jQuery(document).ready(function() {
jQuery("abbr.timeago").timeago();
});

<script src="http://timeago.yarp.com/jquery.timeago.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17,
2008</abbr> into something like this: <abbr class="timeago" title="July 17,
2008">about a year ago</abbr> which yields: about a year ago. As time passes, the timestamps will automatically update.
&#13;