0

私の Node.js コードには、HTML ページをレンダリングし、それに javascript オブジェクトを渡す次の関数があります。htmlParamObj

exports.getPage = function (req, res, next) {

    var htmlParamObj= {
        propertyOne: 'yada',
        propertyTwo: 'yada yada'
       };
    res.render('myPage.html',htmlParamObj);

};

htmlParamObjso: のように EJS を使用して着信パラメーター ( ) にアクセスできますが、ドキュメント自体を介して<% propertyOne %>アクセスする方法がわかりません。htmlParamObjhtmlParamOb' は html のドキュメントに添付されると思いますが、ドキュメントのどのフィールドで見つけることができますか? 頭、体、childNodesの中にありますか? どこ?

4

2 に答える 2

2

渡されたオブジェクトは、HTML のレンダリング中にのみ使用され、ブラウザには渡されません。

ページ内にそのデータが必要な場合は、そこに配置する必要があります。

複雑なデータをクライアント側のスクリプトに渡す必要があるときに私が使用したソリューションは、HTML EJS ファイルの上部近くにスクリプト タグを配置し、そこにデータを入力することです。たとえば、次の内容をテンプレートに追加できます。

<script>
    window.MY_DATA = <%= JSON.stringify(myData) %>
</script>

JSON は JavaScript のサブセットであるJSON.stringifyため、スクリプト タグ内に配置するのに適した形式にデータをシリアル化し、必要な変数に割り当てることができます。

ここでの制限は、 でシリアル化できないデータを送信できないことJSON.stringifyです。重い負担ではありませんが、関数やその他のオブジェクトを送信する場合はつまずく可能性があります。

于 2014-12-23T02:07:32.100 に答える
0

私が見つけた解決策は、次のように HTML でグローバル属性を定義することです。

<a name="team" value="<%=team._id%>"></a>

次に、次のようなスクリプトでアクセスできます。

<script>
var team = document.getElementsByName('team');
</script>

これにより、正しいオブジェクトが返されます。ただし、特にグローバルに定義された変数は通常悪い考えであることを考えると、これが最良の答えだとは思いません。この質問に別の答えが与えられることを願っています。

于 2014-12-23T01:26:23.070 に答える