帆:来自玉模板的本地人

时间:2016-03-01 10:07:55

标签: javascript node.js sails.js momentjs

我正在尝试使用moment.js来解析sails app下的jade模板中的日期。 我已经读过,为了在视图服务器端使用moment.js,我必须使用locals的概念。

因此根据documentation我正在修改我的路线:

var moment = require("moment");
...
'get /post/:post_id': {
    controller: 'PostController',
    action: 'readPostById',
    locals: { moment: moment } // adding moment.js
},

但是当我尝试从玉器中使用时

...
- var date = moment().format('YYYY'); 
span= date
...

..我得到并且错误地说时刻不是一个功能

我做错了什么?

2 个答案:

答案 0 :(得分:2)

我自己已经弄清楚了。背后的原因是在路由中定义locals与在res.render()上传递模板的参数相同。在我的情况下,我用模板传递参数/数据,似乎这将覆盖用locals传递的内容。

因此,如果您想在模板中使用moment,请在渲染时将其传递,而不是locals,如下所示:

var moment = require("moment");
...
showPage: function(req, res) {
    res.render('page.jade', {moment: moment, other_data: "just to test"});
};

答案 1 :(得分:0)

您无法将班级分配给本地人

代码

locals: { moment: moment }它与locals: { moment: moment.toString() }

完全相同

所以时刻的价值将是

moment = "function utils_hooks__hooks() {
        return hookCallback.apply(null, arguments);
    }"

解决方案,您需要在视图之外计算变量

locals: { currentYear: moment().format('YYYY') }