Как правильно преобразовать список в массив JavaScript?

#jquery #jinja2

#jquery #jinja2

Вопрос:

Я попытался вызвать автозаполнение Jquery, источник опции автозаполнения которого находится в списке ниже

 {% set Source = ['Customer', 'Name', 'Salutation', 'First Name English', '[Type Item Here]'] %}
  

Поскольку Jquery AutoComplete принимает массив, я попытался найти способ преобразовать мой список в массив javascript, но безуспешно.

   <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

    <div class="col-sm-12">
      <div class="ui-widget">
        <label>Tags: </label>
        <input class="tags">
      </div>
    </div>

    {% set Source = ['Customer', 'Name', 'Salutation', 'First Name English', '[Type Item Here]'] %}

    <script>
        $(document).ready(function() {

        /* Auto Complete Form Label*/
        var availableTags = "{{Source|safe}}";

            // alert('auto');
            $( ".tags" ).autocomplete({
              source: availableTags,
              autoFocus: true,
              minLength: 1
            });
        })
    </script>
  

Таким образом, как я могу правильно преобразовать свой список Source в массив javascript, чтобы мое автозаполнение также работало? Спасибо

Комментарии:

1. преобразовать в json и распечатать

Ответ №1:

Вы должны преобразовать его в JSON, а затем распечатать, для этого используйте tojson filter. Поскольку JSON используется допустимый javascript, нет необходимости в дополнительном синтаксическом анализе или переносе кавычек.

 <script>

    // .....

    var tagsList = {{ autocompletList|tojson|safe }};
    var availableTags = {{ Source|tojson|safe }};

    // ..... 

<script>
  

Комментарии:

1. Большое спасибо, на мгновение я заключил это в двойные кавычки » » и я получил внутреннюю ошибку сервера 500, этот сервер всегда перенаправлял на URL, который отображает этот шаблон jinja, пока я снова не вернулся к вашему ответу и не удалил двойные кавычки, большое спасибо за вашу помощь, теперь он работает правильно 🙂