2016-10-26 1 views
1

Я использую версию turbolinks 5 и рельсы 5 и новейшие Highcharts. TПредотвратить выполнение предыдущего JavaScript с turbolinks и highcharts // LazyHighCharts

LazyHighCharts обеспечивает функциональные возможности для Turbolinks5 и обертывания диаграммы здания Javascript с

(function() { document.addEventListener("turbolinks:load", function() { //code window.chart_my = new Highcharts.Chart(options); }); })()

Но когда я навигации от страницы, на которой граф был загружен ранее с turbolink, я получил ошибку на вновь загруженной странице.

Uncaught Error: Highcharts error #13: www.highcharts.com/errors/13

Похоже, что все предыдущие JavaScript, который был загружен с "turbolinks:load" являются пересматривают и вызывая highchart бросить ошибку, потому что в новой DOM нет ни одного элемента, к которому что highchart граф renderedTo.

Я пытался отвязать "turbolinks:load" событие из документа, но оно не работает. Это все равно переоценивает.

мысль о решении раскошелиться LazyHighCharts, переписать layout_helper, так что браузер outputed после йот элемента, но это может привести к замедлению страницы, так что поток страницы будет

загружен-дом (график) оценки JS (синхронизации) -> загружен-дом (график) оценки JS (SYNC) ---> загружен-дом (график) оценки Js (SYNC) и т.д., и это приведет к замедлению загрузки страницы я догадка.

Возможно, у парней есть некоторое решение этой проблемы.

ответ

1

Сделан запрос тянуть к lazy_high_charts

document.addEventListener("turbolinks:load", function(e) { 
    // code 
    e.target.removeEventListener(e.type, arguments.callee); 
});