[英]MVC: altering return value in getter
我有一個具有getDate()
getter方法的模型。
在控制器中,我定義了一個名為timeAgoUtil
的實用程序類,該類計算自該Date值以來的時間,例如: 6 hours ago
。
現在,每次我想在屏幕上獲取值時,我都需要訪問該實用程序方法,這是很多事情。 大多數情況下,列表中的對象都是如此,這要求我循環遍歷它以獲得每個以前的值。
我的方法:
timeAgoUtil
實用程序類。 getTimeAgo()
的新getter方法。 return timeAgoUtil.convert(this.date);
。 在使用getter重新調整結果並在模型內部定義實用程序類之前操縱結果嗎?
不它不是。
理想情況下,getter應該僅返回數據,並且不應包含任何業務邏輯。 那是一般方法和最佳實踐。
盡管現在可以使用,但您現在所做的也不是正確的方法。
最好的方法/做法是定義一個Utility類,並在內部定義該方法,該方法計算時間。 模型不應該包含除setter,getter,構造函數以及必要時等於和哈希碼之外的任何其他方法。
根據您提供的信息,您似乎正在使用getDate()方法獲取對象的日期,並確定自該日期以來經過了多少時間。 我認為,您不應該在后端執行此操作。
我的建議是使用純js或angular等框架在前端執行此操作
編輯
如此處所述,您可以使用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.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.