0

JSON データを Jade テンプレートに渡していますが、その JSON データを Jade テンプレートに出力できないようです。これは、保存されて Jade テンプレートに渡される JSON の例です。

{ name: 'Team 1',
  _id: 5134d71192cf972226000003,
  __v: 0,
  key: 1362417425623 }

次のように Jade テンプレートに渡されます。

res.render('tournamentDetails', { 'tournamentData' : tournamentData, seedsSerialized : JSON.stringify(tournamentData.teams) } );

Jade テンプレートの形式は次のとおりです。

script(type='text/javascript')
                var seeds = [#{tournamentData.teams}];

seeds別の JavaScript ファイルでこの変数にアクセスしようとしていますが、アクセスできないようです。JavaScript ファイルのシードにあるものをテストするために使用してテストしてきましalertたが、それはチームではありません。

これも Jade から生成された HTML です。

var seeds = [{ name: 'Team 1',
  _id: 5134d71192cf972226000003,
  __v: 0,
  key: 1362417425623 },{ name: 'Team 2',
  _id: 5139dc66b48da58d0e000001,
  __v: 0,
  key: 1362746470498 },{ name: 'Team 3',
  _id: 5139dda45f1598440f000001,
  __v: 0,
  key: 1362746788314 },{ name: 'Team 4',
  _id: 513b2c66cfd50dce11000001,
  __v: 0,
  key: 1362832486554 }];

JavaScript ファイルでチームにアクセスするにはどうすればよいですか? namesのをteamsJade テンプレートに出力したいと考えています。

4

1 に答える 1

1

これは正確な答えではないかもしれませんが、コメントするには長すぎました...

この jsfiddle を見てください: http://jsfiddle.net/KvXTA/

var seeds = [{ name: 'Team 1',
  _id: 5134d71192cf972226000003,
  __v: 0,
  key: 1362417425623 },{ name: 'Team 2',
  _id: 5139dc66b48da58d0e000001,
  __v: 0,
  key: 1362746470498 },{ name: 'Team 3',
  _id: 5139dda45f1598440f000001,
  __v: 0,
  key: 1362746788314 },{ name: 'Team 4',
  _id: 513b2c66cfd50dce11000001,
  __v: 0,
  key: 1362832486554 }];

console.log(seeds);

コンソールの出力方法に注意してください

Uncaught SyntaxError: Unexpected token ILLEGAL

これは _id フィールドのためです。ID を引用符で囲む必要があるため、シリアル化されたバージョンにも同じ問題があると言うことに驚きました。ID がまったく必要ない場合は、シリアライズされたバージョンで置換関数を使用してそれらを取り除くことができます。

var seedsSerialized = JSON.stringify(teams, function (key, val) {
    return key === '_id' ? undefined : val;
);
res.render('tournamentDetails', { seedsSerialized: seedsSerialized });

次に、そのシリアル化されたバージョンを使用してseeds、テンプレートで初期化します。

script
    var seeds = !{seedsSerialized};

スクリプトをインクルードする順序に関する以前のコメントは、別のファイルがシード変数を作成している可能性があるという懸念ではなく、実際に宣言されるseeds前に使用されたファイルをインクルードしている可能性があるということでした。seeds

例えば:

<script src='logSeeds.js'></script>
<script>
    var seeds = [ ... ];
</script>

logSeeds.js は次のとおりです。

console.log(seeds);

まだ宣言されていないundefinedため、明らかに出力されます。seedsそれは単なる考えであり、必ずしもあなたの状況ではありません.

于 2013-04-11T19:49:28.590 に答える