私はパグを使用していて、情報を得るためにフロントエンドに変数を渡したいのですが、それを行おうとすると、テキストのように渡されます。
これが私のやり方です。
コントローラーコード:
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]
テキストであるためオブジェクトにアクセスできません。オブジェクトのようにオブジェクトを渡す方法はありますか?
この場合、私はこれを使用しました:
var x = "#{ JSON.stringify(y) }"
console.log( JSON.parse(x.replace(/"/g,'"')) );
これがベストプラクティスかどうかはわかりません。
まず、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、ありがとう)