使用Moment.js与Twig

3
我正在使用Twig结合Moment.js计算时间, 代码(Twig)-
我有一个名为post_date_gmt的日期变量,我这样使用它,
<div class="time">
  <time datetime="{{ post_date_gmt| date('Y-m-d H:i:s')}}">moment.unix({{ post_date_gmt }}).local().fromNow()</time>
</div>  

这给我输出:
<div class="time">
    moment.unix(1331845445).local().fromNow()  
</div> 

当我在控制台中尝试运行上述字符串时,它可以正常工作 - 'a month ago'。
我不明白为什么Twig没有给我正确的输出?
我做错了什么吗?谢谢您的时间。

2个回答

1

moment是一个JavaScript函数,您正在尝试从HTML块而不是JavaScript块中调用它。有几种方法可以解决这个问题,但一个简单的技巧是:

<div class="time">
  <time datetime="{{ post_date_gmt| date('Y-m-d H:i:s')}}">
<script type="text/javascript">document.write(moment.unix({{ post_date_gmt }}).local().fromNow());</script></time>
</div>  

我不建议像那样使用document.write。最好将其作为一个单独的javascript块来处理,就像这样(以jquery为例):

<div class="time">
  <time id="time" datetime="{{ post_date_gmt| date('Y-m-d H:i:s')}}"></time>
</div>  

--- snip ---

<script type="text/javascript">
$(function(){
  $('#time').val( moment.unix({{ post_date_gmt }}).local().fromNow() );
});
</script>

0
<li><p class="created"></p></li>                            
<script type="text/javascript">
$(function(){
  $(".created").html(moment.unix({{ post_date_gmt| date('U') }}).local().fromNow());  
});
</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接