2016-11-29 3 views
4

Я пытаюсь реорганизовать мой JS. У меня есть различные функции Morris.js внутри <script> в моем html-файле. Этот html обрабатывается флягой. Данные из функций передаются непосредственно с сервера через систему шаблонов Jinja2.Вставьте переменные Jinja2 в Javascript

Есть ли способ иметь эти функции в JS-файле и дать им значения jinja?

Я действительно не хочу иметь onClick и JS-скрипты в html, я хочу иметь все 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

Это означало бы передачу данных через onclick в html, правильно? – Mese

+0

да @Mese это правильный путь. –

+0

Если это единственный способ, я не буду этого делать. Я не хочу, чтобы JS в моем html – Mese

Смежные вопросы