2016-03-01 76 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'中用時刻名稱和返回時刻實例創建了服務,那麼你可以在你的視圖中獲取它! –