Javascript не выполняется, когда html вызывается с помощью hx-get

У меня есть следующие html-файлы, которые я загружаю в приложение Django: pie_chart.html

{% load i18n %}

<div id="chartcontainer" >
    <div style= "width: 400px;" "height: 400px;">
        <canvas id="pie-chart"></canvas>
        <b>Balance: </b> {{balance}}<br>
        
    </div>
    <div>
        <h5>Detail group: 
            <select name="group" id="group"
                hx-get="groupdetail/"
                hx-trigger="click changed delay:1s"
                hx-target="#groupchart"
                hx-include="[name='year']"
                hx-swap="innerHTML"
            >}
            {% for l in labels %}
                {% if l == groupcode %}
                    <option value={{l}} selected>{{l}}</option>
                {% else %}
                    <option value={{l}}>{{l}}</option>
                {% endif %}
            {% endfor %}
        </select>
        </h5>
    </div>
    
    <div id=groupchart>
        {% include 'bar_chart.html' %}
    </div>
</div>

 <script>
var config_pie = {
     type: 'pie',
     data: {
       datasets: [{
         data: {{ data|safe }},
         backgroundColor: {{ backgroundcolor|safe }},
         label: 'Amount_EUR',
       }],
       labels: {{ labels|safe }}
     },
     options: {
       responsive: true
     }
   };
  
var ctx_pie = document.getElementById('pie-chart').getContext('2d');
window.myPie = new Chart(ctx_pie, config_pie);
</script>

bar_chart.html

{% load i18n %}

<div>
    <div style= "width: 400px;" "height: 400px;">
        <canvas id="group-chart"></canvas>
        <b>Balance: </b> {{groupbalance|safe}} <br>
        <p id="data"> her should com the config_bar var</p>
    </div>
</div>

<script>
    var config_bar = {
        type: 'bar',
        data: {
          datasets: [{
            data: {{ groupdata|safe }},
            backgroundColor: {{ backgroundcolor|safe }},
            label: 'Amount_EUR',
          }],
          labels: {{ grouplabels|safe }}
        },
        options: {
            indexAxis: 'y',
            responsive: true
        }
    };
    
    var ctx_bar = document.getElementById('group-chart').getContext('2d');
    
    window.myBar = new Chart(ctx_bar, config_bar);
    document.getElementById("data").innerHTML = config_bar;
</script>

Когда bar_chart.html вызывается командой {% include 'bar_chart.html' %}, скрипт выполняется и график отображается правильно.

Когда bar_chart.html вызывается представлением Django, вызванным с hx-get="groupdetail/", скрипт не выполняется. html отображается, но график не строится, потому что скрипт не выполняется.

Уже 2 дня ломаю голову над этим и ищу ответ в интернете.

Если кто-то может сказать мне, почему это происходит, было бы здорово.

Я попытался поместить html, который должен быть заменен в и без, изменить hx-swap="innerHTML" на hx-swap="outerHTML", но ничего не меняется.

Я нашел, в чем была проблема. При загрузке 'bar_chart.html' с помощью hx-get я не определил переменную 'backgroundcolor'. Эта отсутствующая переменная блокировала выполнение скрипта.

Я также посмотрю, как я могу использовать предложение, сделанное 'mariodev'.

Спасибо за предложение.

Вернуться на верх