簡體   English   中英

MVC:更改getter中的返回值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM