2013-11-27 3 views
0

안녕하세요 저는 Collapse Tree로 작업하기 위해 d3 플러그인을 사용하고 있습니다. 이것은 나의 예입니다 : http://bl.ocks.org/mbostock/4339083다른 클래스의 속성 가져 오기 (d3)

이제 2 개의 다른 클래스에있는 2 개의 위젯을 만들었습니다. 하나는 나무를위한 것이고 다른 하나는 컨트롤 요소를위한 것입니다. 이제 컨트롤 요소 위젯을 사용하여 클릭 한 노드의 속성을 변경하려고합니다. 그래서 다른 클래스의 클릭 된 노드에서 Data (Object)를 가져와야합니다. 컨트롤 위젯을 사용하여 해당 데이터를 조작해야합니다.

"Dojo on"/ "Dojo connect"는 DOM 상호 작용을위한 것일뿐입니다. 자바 스크립트 클래스간에 통신하고 싶습니다.

.on("click", function (d) { 
    toggle(d); 
    update(d) 
}) 
+0

나는 당신이 무엇을 요구하고 있는지 잘 모르겠습니다. 클릭 한 요소에 대한 참조를 다른 함수로 전달해야합니까? –

+0

예. 노드를 클릭하면 (d)에 객체가 저장됩니다. 이제 다른 .js 파일에서이 파일을 사용하여 작업하고 싶습니다. 컨트롤 위젯에서 해당 노드의 내용을 사용하여 클릭 한 노드를 확인하고자합니다. – freeFoodFred

+0

좋아, 그래서 당신이 호출하는 다른 파일에서 함수에 해당 개체를 전달해야합니다. –

답변

0

당신은 트리 클래스에서 사용자 지정 이벤트를 생성하고 다른 클래스에서이를 처리 할 수 ​​

다음은 노드를 클릭하면 내 온 클릭 기능입니다. 먼저, 트리 노드에서 onClick 이벤트에 대한 이벤트 핸들러를 정의하십시오.

onClick: function(evt) { 
    // here comes your code 
    // when you're finished, fire a custom event 
    this.onNodeClicked(params); 
}, 
onNodeClicked: function(params) {} 

다른 클래스에서는 사용자 지정 이벤트를 수신 대기합니다. 여기에서 트리 위젯을 생성한다고 가정합니다. 그렇지 않으면 트리 객체에 대한 참조를 전달할 수 있습니다.

var tree = new MyTree(); 
dojo.on(tree, "onNodeClicked", this._handleOnNodeClicked); 

희망이 있습니다.

관련 문제