Угловая линейная диаграмма nvd3 с автоматическим изменением размеров
Я использую угловые директивы nvd3.
в соответствии с примером: https://github.com/angularjs-nvd3-directives/angularjs-nvd3-directives/blob/master/examples/lineChart.with.automatic.resize.html
<!--
width and height are removed from the directive for automatic resizing.
-->
Хорошо, если я изменю размер Div на графике. он изменяет размер, но только когда я перемещаю / открываю / закрываю "вид консоли" (Ctrl + Shift + I на FF).
Я проверяю angular-nvd3-директиву, нет вызова события для изменения размера, так что я полагаю, что это компиляция d3 / nvd3?
Мой вопрос до сих пор: как смоделировать такое событие для изменения размера графа?
3 ответа
Вы можете попробовать запустить другое событие изменения размера, которое может перерисовать график. window.dispatchEvent(new Event('resize'));
Подобный подход работал для меня с Chart.js. Странно, когда видимая консоль меняет страницу - все еще не до конца понимаю, как это работает, но она регулярно отображается с динамическими макетами.
Я не уверен, что это поможет вам или нет, но я думаю, вы можете обновить график, пока ваш div изменяет размер, он работает в моем случае:-
Например:-
$('#my_div').bind('resize', function(){
for (var i = 0; i < nv.graphs.length; i++) {
nv.graphs[i].update();
}
});
Вы можете добавить обработчик событий изменения размера jquery, если вы не используете jquery, вы можете присоединить обработчик событий только с использованием угловых параметров.
Использование jQuery
$(document).on('resize', function() {
for (var i = 0; i < nv.graphs.length; i++) {
nv.graphs[i].update();
}
});
Использование только угловых
Вот пример, показывающий, как прикрепить событие к документу, используя angular.