0

Express から jade テンプレートに JavaScript の変数に値を渡そうとしています。

これが急行の私のルートです:

app.get('/tmp', function(req, res){
      res.render('tmp', {
            title: 'Temperature',
            CPU_value : 20,
        });
});

次に、私の翡翠のテンプレートは次のとおりです。

html
  head
    h1= title
    p= CPU_value
    script(type='text/javascript', src='https://www.google.com/jsapi')
    script(type='text/javascript')
      - var myCPU_value = CPU_value
      google.load('visualization', '1', {packages:['gauge']});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
      var data = google.visualization.arrayToDataTable([
      ['Label', 'Value'],
      ['Memory', 20],
      ['CPU', 20],
      ['Network', 68]
      ]);
      var options = {
      width: 400, height: 120,
      redFrom: 90, redTo: 100,
      yellowFrom:75, yellowTo: 90,
      minorTicks: 5
      };
      var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
      chart.draw(data, options);
      }
  body
    #chart_div

CPU_valueに渡された変数はp、タイトルと同様に正しく機能します。できます。しかし、私ができなかったのはCPU_value、関数に渡された配列での値を使用することgoogle.visualization.arrayToDataTableです。

私は試しました:

...
['CPU', CPU_value],
...

また

....
var myCPU_value = CPU_value;
....
['CPU', myCPU_value],
....

それらのどれも機能しませんでした...

どうすればこれを正しく行うことができますか?

ありがとう

4

2 に答える 2

1

これを試して:

var data = google.visualization.arrayToDataTable([
      ['Label', 'Value'],
      ['Memory', 20],
      ['CPU', !{JSON.stringify(CPU_value)}],
      ['Network', 68]
      ]);
于 2013-09-29T22:34:30.793 に答える
0

私は自分のクライアント JavaScript をテンプレート化するという考えが好きではありません。試してみるとうまく動作しませんでした。したがって、私の頼りになる解決策は、属性を使用してデータを dom に保存し、data-*JS からアクセスすることです。

//jade
html
  head
    h1= title
    p#cpuValue(data-cpuvalue=locals.CPU_value)= locals.CPU_value

// client js
var myCPU_value = 
document.getElementById('cpuValue')
.getAttribute('data-cpuvalue');
...
var data = google.visualization.arrayToDataTable([
['Label', 'Value'],
['Memory', 20],
['CPU', myCPU_value], // or +myCPU_value to coerce String>Number
['Network', 68]
]);
...
chart.draw(data, options);
于 2013-09-30T07:12:10.197 に答える