我似乎无法在我的keystone JS博客和其他页面上设置日期格式。
如果我在模板中使用{{publishedDate}}(我使用把手)一切都很好,除了它给我这样的东西:2017年3月23日00:00:00 GMT + 0000(GMT标准时间)显然不是很好。
{{ post.publishedDate.format('D MMMM') }}
{{ post._.publishedDate.format('D MMMM') }}
{{ publishedDate.format('D MMMM') }}
全部返回错误如下: 第18行的解析错误: ... post.publishedDate.format(' D MMMM')}}< ----------------------- ^ 期待' ID',得到'无效'
我也试过改变模型中的东西:
publishedDate: { type: Types.Date, index: true, format: 'YYYY', dependsOn: { state: 'published' }},
其中有许多变化。我已经查看了http://keystonejs.com/docs/database/#fieldtypes-date上的keystone文档,并试图实现它所说的内容,但它仍然无效。
这实际上应该非常简单,我确定它是 - 我只是不知道该怎么做(!)
任何帮助表示感谢。
答案 0 :(得分:1)
文档上存在下划线方法,而不是属性。您拥有的第二行代码应该可行; the format
underscore function将使用您想要的格式设置publishedDate
项的格式(如果您不提供参数,则默认为Do MMM YYYY
,但您可以通过提供参数来指定您自己的Moment.js格式format
)。
{{ post._.publishedDate.format('D MMMM') }}
只要post
作为您的Handlebars模板的局部变量(路线中为locals.post = post
)提供,就不会返回任何错误。
编辑 3/28/17
在Handlebars中,您必须以与Keystone文档描述的方式不同的方式将数据传递给函数。他们使用Pug,所以你想要做的就是在Pug工作。把手以不同方式评估功能。尝试{{post._.publishedDate.format "D MMMM"}}
将"D MMMM"
字符串传递给格式,然后就可以了。
答案 1 :(得分:0)
谢谢Shea - 超越职责要求的帮助。非常感谢;-)最终解决方案(对于其他感兴趣的人)是 - 如果在循环中运行 - 在模型中创建虚拟,如下所示:
Post.schema.virtual('formattedDate').get(function () {
return this._.publishedDate.format("D MMMM");
});
然后,在把手模板中使用以下格式:
{{formattedDate}}
如果不在循环中运行,只需使用:
即可{{_。已发布日期格式" D MMMM"}}