2017-02-05 1 views
1

を認識しないEJSファイルに私は、サーバー側のチャートを作成し、次のコードでEJSに新しいグラフを描画しようとするD3-ノードを使用しよう: <% = svgChart%> ときIブラウザを使用して表示すると、以下のようなsvgタグの内容のみが表示されます。なぜrendeing SVGタグ

<svg xmlns="http://www.w3.org/2000/svg" width="960" height="400"><defs>      <style type="text/css"><![CDATA[ .axis{font: 10px sans-serif;} .axis path,.axis line{fill: none;stroke: #000;shape-rendering: crispEdges;} .x.axis path{display: none;} ]]></style></defs><g transform="translate(40,20)"><path d="M20,32.4L20.430000000000003,32.4L20.86,32.4L21.290000000000003,32.4L21.720000000000002,32.4L22.150000000000002,32.4L22.580000000000002,32.4L23.01,32.4L23.44,32.4L23.87,32.4L24.299999999999997,32.4L24.73,32.4L25.16,32.4L25.590000000000003,32.4L26.02,32.4L26.450000000000003,32.4L26.88,32.4L27.310000000000002,32.4L27.740000000000002,32.4L28.17,32.4L28.6,32.4L29.03,32.4L29.46,32.4L29.89,32.4L30.32,32.4L30.75,32.4L31.18,32.4L31.61,32.4L32.04,32.4L32.47,32.4L32.9,32.4L33.33,32.4L33.76,32.4L34.190000000000005,32.4L34.620000000000005,32.4L35.050000000000004,32.4L35.480000000000004,32.4L35.910000000000004,32.4L36.34,32.4L36.77,32.4L37.2,32.4L37.63,32.4L38.06,32.4L38.489999999999995,32.4L38.92,32.4L39.35,32.4L39.78,32.4L40.21,32.4L40.64,32.4L41............................... 

チャート自体は表示されません。 svgChartには、svgタグの文字列が含まれています。 svgChartのコンテンツ(文字列)をejsに直接コピーすると、チャートが完全に表示されます。

ページを読み込むときにタグの内容を表示できないようです。svgChartをプレーンな文字列とみなします。

私の質問:svgChartをsvgタグとして認識させるにはどうすればタグのテキストのsvgチャートを表示することができますか?

+0

@Robertに エスケープされていない値を出力し、それはに関連すると思われますejsレンダリング方法。レンダリング時には、<% %>の間のコードはコード自体を持っているだけで、それをsvgコードとして解釈する時間はありません。同じSVGコード(タグ)を同じejsファイルに直接コピーできるので、クライアントはコードを見る代わりに完全にチャートを取得できます。私がしようとしているのは、動的にそのsvgコード(またはsvgタグ)をejsファイルに入れて、データが変更されるたびにクライアントに異なるチャートを持たせることです。助言がありますか? – Robin

答えて

1

<%- svgChart %>の代わりに<%= svgChart %>を使用してみてください。 EJSのマニュアルの :

  • <%は=出力テンプレート(HTMLエスケープ)
  • <%に値が - テンプレート
+0

Lukkazsに感謝します。私はこれを試してみましょう、後であなたに戻ってくるでしょう。私はこれが正しい方向ではないと思っていて、以前のアプリケーションでは別の方法を試しました。 – Robin

関連する問題