2016-03-01 50 views
1

我想利用moment.js的好处来解析sails应用程序下玉模板中的日期。 我已经读过,为了在服务器端使用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

是否'跨度=时刻()格式(“YYYY”);'工作? – SlashmanX

+0

不,不。 – kaytrance

回答

1

我自己想通了。背后的原因是在路线中定义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"}); 
}; 
0

您不能分配类当地人

在你的代码

locals: { moment: moment }这是完全一样的locals: { moment: moment.toString() }

所以时刻的值将是

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

的解决方案,你需要计算你的变量以外的变量

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

根据[documentation](http://sailsjs.org/documentation/concepts/views/locals),我可以,因为帆会自动将lodash传递给所有视图。 – kaytrance

+0

我认为这是因为lodash被定义为全局变量 也许你可以将时刻作为全局导出 –

+0

所以也许如果你在'src/services'中用时刻名称和返回时刻实例创建了服务,那么你可以在你的视图中获取它! –