我正在使用meteor / spacebars并尝试格式化{{#each}}的输出。我之前已经问过这个问题here但是我试图应用这些答案,并且出于任何理由他们只是清除了应该格式化的字段,根本没有输出,我不能为我的生活找出原因。
这就是我的mongo条目:
{ "changes": [
{
"name": "oBf4vPN6TcGw8mbok",
"date": "2016-06-07T01:48:37.695Z",
"score": "general",
"value": "5"
},
{
"name": "oBf4vPN6TcGw8mbok",
"date": "2016-06-07T01:48:38.361Z",
"score": "general",
"value": "-5"
}
}
这是HTML:
{{#each changes}}
<tr>
<td>{{name}}</td>
<td>{{date}}</td>
<td>{{score}}</td>
<td>{{value}}</td>
</tr>
{{/each}}
我正在尝试将'date'格式化为更具可读性的内容,并且'name'字段用于查找与该代码对应的用户的用户名。看起来我想申请之前没有使用过的“注册助手”并找不到有关 - except here的更多信息 - 但是当我将以下代码复制并粘贴到我的客户端时 - 侧javascript文件它只是清除输出并返回和空格
UI.registerHelper('formatTime', function(context, options) {
if(context)
return moment(context).format('MM/DD/YYYY, hh:mm');
});
答案 0 :(得分:1)
乔希,
这是一个工作示例流星应用程序,我将它们放在一起向您展示它是如何工作的:
Moment JS and Meteor Test - on Github
您最感兴趣的两个文件是: main.html和main.js
以上示例给出了以下输出:
It is now (unconverted): 1465357853653
It is now (converted): June 7th, 2016
It was as some time (unconverted): 2016-06-07T01:48:37.695Z
It was as some time (converted): June 6th, 2016
我假设您有一个这样的文件:
some_template.html:
-------------------
<template name="someTemplate">
{{#each changes}}
<tr>
<td>{{name}}</td>
<td>{{date}}</td>
<td>{{score}}</td>
<td>{{value}}</td>
</tr>
{{/each}}
</template>
制作另一个文件:
helpers.js:
-----------------
Template.registerHelper('ISOToHuman', ( isoString ) => {
if ( isoString ) {
return moment( isoString ).format( 'MMMM Do, YYYY' );
}
});
然后像这样使用它:
{{ISOToHuman "ISO string here"}}
在你的情况下:
{{#each changes}}
<tr>
<td>{{name}}</td>
<td>{{ISOToHuman date}}</td>
<td>{{score}}</td>
<td>{{value}}</td>
</tr>
{{/each}}
还要确保安装了momentjs。在终端/控制台中运行:
$ meteor add momentjs:moment
(注意:&#39; $&#39;是控制台光标,运行命令时不包括它)
以下是帮助我为您创建此答案的网页链接:
Test Github project setup for this question