Javascript 帆船:来自翡翠模板的当地人
我正试图利用Javascript 帆船:来自翡翠模板的当地人,javascript,node.js,sails.js,momentjs,Javascript,Node.js,Sails.js,Momentjs,我正试图利用moment.js的优势,在sails应用程序下解析jade模板中的日期。 我已经读到,为了在视图服务器端使用moment.js,我必须使用locals的概念 因此,根据我的建议,我将我的路线修改为: var moment = require("moment"); ... 'get /post/:post_id': { controller: 'PostController', action: 'readPostById', locals: { moment:
moment.js
的优势,在sails应用程序下解析jade模板中的日期。
我已经读到,为了在视图服务器端使用moment.js
,我必须使用locals
的概念
因此,根据我的建议,我将我的路线修改为:
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
...
…我错误地说,时刻不是函数
我做错了什么?您不能将类分配给本地人 在代码中
locals:{moment:moment}
它与locals:{moment:moment.toString()}
因此,力矩的值将是
moment = "function utils_hooks__hooks() {
return hookCallback.apply(null, arguments);
}"
解决方案是,您需要在视图之外计算变量
locals: { currentYear: moment().format('YYYY') }
我自己已经弄明白了。背后的原因是,在路由中定义
locals
与在res.render()
上传递模板的参数相同。在我的例子中,我使用模板传递参数/数据,这似乎会覆盖使用局部变量传递的内容
因此,如果要在模板中使用矩
,请在渲染时传递它,而不是使用局部变量
,如下所示:
var moment = require("moment");
...
showPage: function(req, res) {
res.render('page.jade', {moment: moment, other_data: "just to test"});
};
Doesspan=moment().format('YYYY')代码>工作?根据某种方式,我可以,因为sails会自动将lodash传递给所有视图。我认为这是因为lodash定义为全局,也许您可以将时刻导出为全局Too,也许如果您在src/services
中创建服务,并使用时刻名称和返回时刻实例,您可以在视图中获取它!