2016-11-29 127 views
4

我试图重构我的JS。在我的html文件中,我有一个<script>内的各种Morris.js函数。这个html被烧瓶渲染。来自功能的数据通过Jinja2模板系统直接从服务器获得。在Javascript中插入Jinja2变量

有没有什么办法让这些函数在JS文件中,并给他们jinja值?

我真的不希望在html中有onClick或者JS脚本,我想让所有的JS都在单独的JS文件中,只要有可能。据我所知,我不能因为这些变量是由引擎渲染​​的,但在我看来,导入JS文件的脚本也由jinja引擎渲染,所以我不太确定。

我认为通过meta标签传递数据可能是一种可能性,但我真的不想要任何黑客,如果我不能或者没有一个“正确”的方式去做,我不会做到这一点。

实施例功能:

foo = function(){ 
     new Morris.Line({ 
       element: 'network-chart', 
       data: [ 
       {% for load in node_statistics %} 
       { y: {{load['time']}}000, a: {{load['b_sum_up']}}, b: {{load['b_sum_down']}}, c: {{load['b_max_up']}}, d: {{load['b_max_down']}} }, 

      {% endfor %} 
       ], 
       xkey: 'y', 
       ykeys: ['a', 'b', 'c', 'd'], 
       labels: ['sum up bandwidth', 'sum down bandwidth', 'max up bandwidth', 'max down bandwidth'] 
      }); 
    } 

预先感谢。

回答

0

我认为你可以将参数传递给你的函数,如果你将你的js放在单独的文件中。

+0

这将意味着通过HTML中的onclick传递数据,正确吗? – Mese

+0

是@Mese这是正确的方法。 –

+0

如果这是唯一的方法,我不会这样做。我不想在我的HTML中有JS – Mese