0

我在一个使用 Angular 的 Grails 项目中工作。

我使用一个名为 PrettyPrint 的插件来获得“类似推特”的时间(即格式化日期,如“片刻前”)。

我想在 ng-repeat 循环中使用插件。

<tr ng-repeat="notification in notifications">
...
    <td><prettytime:display date="${notification.date}" /></td>
...
</tr>

在上面的代码中,抛出的错误是Cannot get property 'date' on null object. (它不识别来自角度循环的通知项目)。

如果我使用{{notification.date}}它会显示日期。

我该如何处理插件和 Angular?

4

2 回答 2

2

简单地说,你不能。

一种是基于浏览器的,另一种是基于服务器的。您不能使用基于服务器的插件,并在浏览器中从 JavaScript 调用它。

想清楚。ng-repeat循环由浏览器完成。当这种情况发生时,服务器已经完成了 GSP 的处理并将其发送到浏览器。那时没有机会调用插件。

您将有更好的运气从服务器获取日期并在浏览器中解析它并使用基于浏览器的插件,该插件提供与 Grails 插件相同的功能来格式化日期。

于 2015-10-07T21:47:09.820 回答
1

在您的 gsp 中尝试此代码(假设您已通过模型将通知列表传递给视图):

<%
  def notifications = notificationsFromModel.collect {
    [date: prettyTime.display(it.date), message: it.message]
  }
%>

<span ng-init="notifications = <%= notifications as JSON %>"></span>

<tr ng-repeat="notification in notifications">
  <td>{{ notification.date }}</td>
  <td>{{ notification.message }}</td>
</tr>
于 2015-10-11T11:10:36.313 回答