Sails.js

[Sails.js] exposeLocalsToBrowser: 変数をクライアントサイドJavascriptに渡す

More than 1 year has passed since last update.

変数をサーバーサイドからクライアントサイドに渡したい

変数をサーバーサイドのコントローラーからからクライアントサイドに渡すために、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'}