홈>
하나의 svg 요소에 다른 유형의 nvd3 차트를 동적으로 만들려고합니다 (주로 차트 유형을 즉시 전환하려고하기 때문에). 이를 위해 차트 유형을 변경할 때마다 svg-Element의 모든 자식을 삭제하고 새 차트를 추가합니다.
이것은 모두 잘 작동합니다. 문제는 내가 창 크기를 조정하고
chart.update
를 호출 할 때 발생합니다.
nv.utils.windowResize
를 통해
. 이상한 이유로이 프로세스 중에 이전 차트가 DOM에 다시 추가되고 2 개의 차트가 표시됩니다.
효과의 사진은 다음과 같습니다.
다음은 행동을 가진 플런저의 예입니다 : Plunker . 버튼을 클릭하여 차트 유형을 선에서 막대로 변경하고 미리보기 창 크기를 조정하면됩니다.
아무도 전에이 문제가 있었거나이 문제를 해결하려고 할 수있는 것을 알고 있습니까?
도움을 주셔서 감사합니다!
- 답변 # 1
- 답변 # 2
사용자 정의 콜백 함수를
nv.utils.widowResize
에 전달하여이 문제를 해결할 수있었습니다. 방법. 차트 크기를 조정하면 여러 번 삭제하고 다시 작성하기 때문에 스트로브로 표시되지만 다른 방법을 찾지 못했습니다.var removeChart = function(element) { d3.select(element).selectAll('*').remove(); d3.selectAll('.nvtooltip').style('opacity', '0'); }; nv.utils.windowResize(function() { // chartElement is a reference to the chart's <svg> element removeChart(chartElement); chart.update(); });
관련 자료
- jquery - JavaScript 이벤트 처리 코드 get이 여러 번 호출 됨
- javascript - IE11 양식 제출 이벤트가 호출되었지만 양식이 제출되지 않았습니다
- python 3.x - 실행중인 이벤트 루프에서 asynciorun ()을 호출 할 수 없습니다
- javascript - 이 이벤트 리스너가 호출 한 함수 리스너가 예상과 다릅니다
- JavaScript 창 크기 조정 이벤트가 느립니다 창 크기 조정 이벤트를 최적화하는 방법
- mql5 - 어떤 이벤트가 먼저 호출됩니까? OnTick () 또는 OnTimer ()?
- javascript - 요소를 클릭 할 때 클릭 이벤트 리스너가 호출되지 않음
- 추가 된 버튼에서 JavaScript 이벤트 핸들러가 호출되지 않습니다
- c# - 화면 해상도보다 차트 크기를 조정하는 방법은 무엇입니까?
- javascript - 왜 창 크기 조정 이벤트가 g 요소를 반복적으로 추가합니까?
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- JavaScript 변수를 HTML div에 '출력'하는 방법
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 화면에서 찾은 요소를 찾을 수없는 경우 셀레늄
차트를 선언하는 방식에 문제가있는 것 같습니다. let 연산자는 블록 범위 지정을 사용하므로 원래 코드는 다음과 같습니다.
작동하지 않습니다. 차트는 if 블록 내에서만 정의됩니다. 대신이 작업을 수행 할 수 있습니다 (차트는 폐쇄 외부에서 선언 됨).
https://plnkr.co/edit/pwiO8FCpGyd2JLG4hllW?p=preview