2017-09-28 2 views
0

문제가있어서 도움이 필요합니다. chart.js로 차트를 만들고 그 차트를 함수로 업데이트하고 싶습니다.함수 내부에서 객체 조작

나는 다음과 같은 설정이 있습니다

function createchart(obj){ 
var kdChart = new Chart(kdchart, { 
      type: 'line', 
      data: data, 
      options: options 
     }); 

지금 내가 이런 제 2 기능과 차트를 업데이트하려고 :

function updatechart(){ 
    //collect new data... 
    kdChart.data.labels = datepoints; 
    kdChart.data.datasets[0].data = kdata; 
    kdChart.data.datasets[1].data = ddata; 
    kdChart.update(); 
} 

지금 내가 얻을 오류를

TypeError: kdChart.data is undefined

때 나는 그것이 작동하는 createchart-function 바깥에서 Chart를 생성한다. 여기서 내가 뭘 잘못하고 있니? 함수 내부에서 개체를 업데이트하려면 어떻게해야합니까?

답변

1

변수는 함수 내에 만 존재한다는 것이 문제입니다.

function createchart(...) { 
    var kdchart = ... 
    ... 
    return kdchart; 
} 

그런 짓을 그리고 당신이 어딘가에이 기능 이동 스틱 kdchart를 호출 할 때 위치를 찾을 수 - 글로벌없는 경우에는 다른

+0

나는 ... 감사합니다 ... 내가 그것을 가지고 생각 난 여기가 시도는 IT 작동 : – pfmd86

+0

지금은 또 다른 "하지만 ..." 을 https://jsfiddle.net/pfmd86/fcbcLbn3/이 나는 함수를 호출하여 ajax 호출의 성공 함수 내에서 차트를 만든다. 그리고이 함수 내에서 하나 이상의 "create-chart"를 호출한다 ... – pfmd86

+0

여러 개의 차트가 관련되어 있다면, 차트. 이 답변으로 질문에 답변 하셨다면 –

0

이 때문에 변수 kdChart의 범위이다 윈도우 객체는 더 없다 . 실행이 그 함수 내부에있을 때까지 살아있다. 그렇지 않으면 죽은 것이다.

전역으로 생성하거나 하나의 함수 위에 객체를 생성하고 반환 할 수 있지만 필요한 모든 곳에서 해당 함수를 호출해야하며 동일한 참조를 얻을 필요는 없습니다.

액세스 할 복사본이 하나만 있도록 전역 개체를 만듭니다.

+0

동의하십시오. 함수 밖에서 변수를 호출하면 모든 것이 작동 중입니다! – pfmd86