我正在尝试使用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
...
..我得到并且错误地说时刻不是一个功能。
我做错了什么?
答案 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') }