Переменная Javascript в выражение Jinga не заменяется - PullRequest
0 голосов
/ 08 октября 2018

У меня есть функция Javascript, которая вставляет некоторый HTML-код в HTML-страницу моего приложения Flask при нажатии кнопки.Вот функция Javascript:

function add_html(n){
    var snippet = "<table> \
        <thead> \
        <tr> \
            <th scope=\"col\"></th> \
            '{% for keys in data[n]['returns'] %}<th scope=\"col\">{{keys}}</th>{% endfor %}' \
        </tr> \
        </thead>";

    $(snippet).insertAfter("#div-id");
}

Я хочу, чтобы переменная javascript n была заменена ее значением (это целое число), но она не работает ... Если я вручную заменил ее нацелое число, как 1 это работает.Я пытался заменить n на " + n + " или ' + n + ', но ничего не работает.Любая идея будет оценена!

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Простое решение, которое сработало для меня, заключается в том, чтобы сохранить содержимое переменной, отправленной из render_template в python, в переменную Javascript и использовать ее по требованию после любого выражения Jinja.

<script type="text/javascript">
    var stored_data = {{data|safe}};

    function add_html_tab(n){
        var keys_columns_html = "";

        for(keys in stored_data[n-1]["returns"]){
            console.log(keys);
            keys_columns_html += "<th scope=\"col\">" + keys + "</th>";
        }

        $(keys_columns_html).insertAfter("#myID");
    }

</script>
0 голосов
/ 08 октября 2018

Конечно, это не изменяется, вы передаете n как строковый литерал.
Возможно, вы захотите что-то вроде:

var snippet = ... {% для ключей в данных['+ n +'] ['возвращает']%} ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...