2015-11-19 50 views
0

我有一个产品搜索结果prodArray用于呈现我的.ejs脚本。它由基于上一个查询的许多对象组成。每个对象将包含一个startDate字段,它是一个Date()对象。我希望moment.js以更令人愉快的方式显示此日期(我决定的格式)。我用我的date.toString()使用ejs填充<span>标记。然后我希望jQuery在文档加载时选择它并以我想要的格式显示。如何让jquery根据当前文本更改文本

这可能不是最好的办法。我愿意接受任何建议。

我.ejs代码如下:

<h1>My List of products</h1> 
<% prodArray.forEach(function (product) { %> 
    <div class="product"> 
    <h2><%= product.name %></h2> 
    <p>Starting: <span class="moment"><%= product.startDate.toString() %></span><br/> 
    Places: <%= product.places.max %><br/> 
    </p> 
    </div> 
<% }) %> 

<script> 
    $(document).ready(function() { 
    // $('.moment').text(moment($(this).text()).format('MMM Do YYYY hh:mm')) 
    // DOES NOT RUN. 

    // $('.moment').text(moment($(this).contents()).format('MMM Do YYYY hh:mm')) 
    // POPULATES ALL MY PRODUCTS WITH THE SAME DATE 

    // $('.moment').text(moment($(this).val()).format('MMM Do YYYY hh:mm')) 
    // POPULATES ALL MY PRODUCTS WITH 'INVALID DATE' 

    /* 
    $('.moment').on("ready",function() { 
     var datestr = $(this).text(); 
     $(this).text(moment(datestr).format('MMM Do YYYY hh:mm')) 
    }) 
    DOES NOT AFFECT ANYTHING. */ 
    }) 
</script> 

一些我已经试过的东西在脚本中注释掉及其影响写入波纹管它们。有没有一个

$(.moment).nothinghappened(function() { 
// blah 
}) 

事件?

如果您有任何建议,我将不胜感激。

+0

有人有类似的问题,这可能会帮助 - http://stackoverflow.com/a/27659332/4214571 –

回答

0

我认为你可以做这样的事情

<p>Starting: <span class="moment"><%= moment(product.startDate).format('dd-MMM-YYYY') %></span><br/> 
+0

无需使用jQuery更新值 –

+0

现在只能看到你的答案。您还需要将时刻作为局部变量传递,正如我在答案中所显示的那样。感谢您花时间帮助我。 – seamusgalla

0

所以我解决了这个由无需在客户端使用的时刻。如果您在呈现您的ejs时将瞬间作为局部变量传递。

var moment = require('moment') 
router.get('/product', function (req,res,next) { 
    mongoose.model('products').find({}).exec(functions (error, prodArray) { 
    res.render('productTemplate',{ 
     prodArray: prodArray, 
     moment: moment 
    }) 
    }) 
}) 

然后,您可以使用它像这样

<p>Starting: <span class="moment"><%= moment(product.startDate).format('MMM Do YYYY hh:mm') %></span> 
在模板

信贷由于@Sean Murin和@Zohaib Ijaz