1. ホーム
  2. javascript

[解決済み] オブジェクトデータをレンダリングするためにHandlebars.jsが必要 "[Object object]" の代わりに。

2023-06-21 02:39:18

質問

Handlebarsのテンプレートを使用していますが、JSONデータはすでに[Object object]で表現されていますが、Handlebarsの外でこのデータをパースするにはどうしたらよいでしょうか?例えば、ハンドルバーズタグを通してページ上のJavaScript変数に入力しようとしているのですが、これがうまくいきません。

何か提案はありますか?ありがとうございます!

EDITです。

私は、テンプレートにExpressJSとHandlebarsを使用していることを明らかにする。 私のルートでは、次のようになります。

var user = {}
user = {'id' : 123, 'name' : 'First Name'}

res.render('index', {user : user});

そして、index.hbs テンプレートにある {{user}} オブジェクトがあります。 私は {{#each}} を使用してオブジェクトをうまく反復できます。 しかし、私はBackbonejsも使っていて、このデータをこのようなViewに渡したいのです。

myView = new myView({user : {{user}});

問題は、その {{user}} は単に [Object object] を表示するだけです。これをconsole.logに出力すると「Unexpected Identifier」というエラーが発生します。

どのように解決すればよいですか?

出力時に {{user}} を出力する場合、Handlebars はまず user 's .toString() の値です。プレーンな Object の場合は のデフォルトの結果は "[object Object]" が表示されます。

もっと便利なものを手に入れるには、オブジェクトの特定のプロパティを表示させるか

{{user.id}}
{{user.name}}

または、オブジェクトを別の方法でフォーマットするヘルパーを使用/定義することもできます。

Handlebars.registerHelper('json', function(context) {
    return JSON.stringify(context);
});

myView = new myView({
    user : {{{json user}}} // note triple brackets to disable HTML encoding
});