web-dev-qa-db-ja.com

パグからフロントエンドJavaScriptにオブジェクトを渡す方法

私はパグを使用していて、情報を得るためにフロントエンドに変数を渡したいのですが、それを行おうとすると、テキストのように渡されます。

これが私のやり方です。

コントローラーコード:

res.render('view/edit', {
     title: 'Title',
     sub:true,
     data: variableObject
 });

これは、レンダリングされたビューのコードです。

script(type='text/javascript').
    var x = "#{data}"
    console.log(x);

そしてこれはログの結果です

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

テキストであるためオブジェクトにアクセスできません。オブジェクトのようにオブジェクトを渡す方法はありますか?

11
Jorge Mejia

この場合、私はこれを使用しました:

var x = "#{ JSON.stringify(y) }"
   console.log( JSON.parse(x.replace(/"/g,'"')) );

これがベストプラクティスかどうかはわかりません。

2
Jorge Mejia

まず、JSON.stringifyを使用してオブジェクトを文字列化します。

res.render('view/edit', {
     title: 'Title',
     sub: true,
     data: JSON.stringify(variableObject)
 });

次に、 String Interpolation、Unescaped!{data}を使用します。

script(type='text/javascript').
    var x = !{data}
    console.log(x);

script(type='text/javascript').
    var x = !{JSON.stringify(data)}
    console.log(x);

(@ Mattへのkudos、ありがとう)

13
dNitro