変数をサーバーサイドからクライアントサイドに渡したい
変数をサーバーサイドのコントローラーからからクライアントサイドに渡すために、Sails.jsのV1.0はexposeLocalsToBrowserという便利な関数を用意してくれているようですが、公式ドキュメントに記述が見つからず、使い方がわからなくて苦労したのでメモしておきます。
使い方
結論だけ書きます。
まずはコントローローからビューに変数を渡す。
AppController.js
// Viewをサーブするアクション
index: fucntion (req, res) {
res.view('index', {
hoge: 'piyo'
};
}
次にビューでexposeLocalsToBrtowserを使う。ejsの場合、
index.ejs
<%- exposeLocalsToBrtowser() %>
これでクライアントサイドJavascriptで、window.SAILS_LOCALSという変数にコントローラーで渡した全ての変数が入ります。
index.js
console.log(window.SAILS_LOCALS); // => {hoge: 'piyo'}