如何改变Spacebars输出的显示?

时间:2015-02-04 03:58:10

标签: meteor spacebars

所以我在模板中有这样的东西:

{{#each posts}}
    <li>{{date}}</li>
{{/each}}

这显示很好,但问题是我的&#34; date&#34;变量出现为Sat Feb 07 2015 19:47:13 GMT-0800 (PST),这是准确但有点长且不必要的。

我希望日期更简单,例如February 7, 2015。但是,请原谅我缺乏理解,但我知道如何做到这一点的唯一方法就是以漂亮的格式存储它,但如果我不得不这样做似乎并不高效。每次我想要看起来有点不同时都这样做。

理想情况下,我想在片刻()中包装它并产生这样的东西:

moment(date).format("MMMM Do YYYY")

我尝试过这样做,但它不起作用:

{{#each posts}}
    <li>{{moment(date).format("MMMM Do YYYY")}}</li>
{{/each}}

3 个答案:

答案 0 :(得分:4)

您可以创建一个寄存器帮助程序来处理日期格式:

helper.js

Template.registerHelper('FormatDate', function(date){
    return moment(date).format("MMMM Do YYYY")
})

现在你可以做到:

{{#each posts}}
    <li>{{FormateDate date}}</li>
{{/each}}

答案 1 :(得分:3)

添加帮助

Template.yourTemplate.helpers({
  formattedDate: function(){
    return moment(this.date).format("MM/DD/YYYY");  // or whatever format you prefer
  }
});

答案 2 :(得分:0)

试试这个。

Template.example.rendered = function(){
//here we are getting a new date
var d = moment(new Date());
//here we take the li element and we set it on the html
document.getElementById("dateFormated").innerHTML = d.format('LL');
}


<template name="example">
<li id="dateFormated"> </li>
</template>

<强> Upate

由于您使用的是{{#each}}迭代器

你可以这样做。

var d = moment(new Date()).format('LL');

var d = moment(new Date());
dFormat = d.format('LL');

在插页上插入Posts.insert({submitted:dFormat})

之类的字段

{{each}}电话一样

{{#each posts}}
    <li>{{subbmited}}</li>
{{/each}}

不插入Databse(另一个选项)

Template.example.helpers({
  formattedData:function(){
   return moment(new Date()).format('LL');
  } 
})

{{#each posts}}
        <li>{{formattedData}}</li>
    {{/each}}