2016-08-22 9 views
1

Rickshaw JS를 사용하여 그래프를 작성하고 있습니다. 이렇게하려면 호출 할 때 그래프를 렌더링하는 함수를 만들었습니다. 내가 직면 한 문제는 스크립트 태그 내에서 호출 될 때 함수가 모든 것을 잘 렌더링한다는 것입니다. 그러나 AJAX 호출의 성공 함수에서 호출 될 때 축이 표시되지 않습니다.AJAX 성공 함수 내에서 Rickshaw JS 축 렌더링 문제가 발생했습니다

관련 코드 :

<script> 
function ProbabilityPlot(a) { 
    var graph = new Rickshaw.Graph({ 
     ... 
    }); 
    graph.render(); 

    var xAxis = new Rickshaw.Graph.Axis.X({ 
     ... 
    }); 
    xAxis.render(); 

    var yAxis = new Rickshaw.Graph.Axis.Y({ 
     ... 
    }); 
    yAxis.render(); 
}; 

$.ajax({ 
    url: plotURl, 
    dataType: 'json', 
    cache: false, 
    success: function(data) { 
     ProbabilityPlot([ {{plot_data}} ]); <-- axes do NOT work 
    } 
}); 

ProbabilityPlot([ {{plot_data}} ]); <-- eveything works perfectly 
</script> 

I 함수에 전달 된 매개 변수가 두 경우 모두 동일한 지 확인할 수 있습니다.

+0

코드에서 '.bind (this)'의 요점은 무엇입니까? 콜백 함수를 바인딩하는 것은 없습니다. 또한 괄호가 일치하지 않습니다. 코드의 들여 쓰기를 수정하고 중괄호를 일치시키고 콜백에서 'this'가 가리킬 것으로 예상되는 것을 설명하십시오. – Tomalak

+0

현재 _ {{plot_data}} _로 표시되는 정적 데이터를 얻습니다. 이제 AJAX로 전환하여 비동기 데이터를 가져옵니다. 나는이 함수를 내가 만든 그래프의 DOM 요소에 연결하기 위해 bind (this)를 사용하고 있었다. 질문에서 코드를 추가로 업데이트했습니다. – Shubham

+0

내가 직면 한 문제와 관련이 없다고 생각하면서 원래 스 니펫에서 _bind (this) _를 제거했습니다. – Shubham

답변

0

수정 방법이나 근본적인 문제는 확실하지 않지만 수정 사항 (적어도 지금은)은 스크립트를 html의 헤드로 옮기는 것이 었습니다.

<script src="{% static "Home/js/vendor/jquery.js" %}"></script> 
<script src="http://code.shutterstock.com/rickshaw/vendor/d3.v3.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/rickshaw/1.5.1/rickshaw.min.js"></script> 
+1

그런 다음 수정 한 내용은 사용자 정의 JS 섹션을'$ (document) .ready (function() {/ * ... * /});} 또는'$ (function {) {/ * ... * /}); ' – Tomalak

+0

완벽한 감사합니다! 어떻게 든 그것을 놓쳤습니다 .. 앞으로 수표를 추가 할 것입니다 .. 다시 한번 감사드립니다! – Shubham

+0

이렇게하면 라이브러리를 다시 문서의 끝으로 이동할 수 있습니다. – Tomalak