2017-12-29 21 views
1

슬라이스 풀링은 모두 또는 아무 것도없이 쉽게 전환 할 수 있습니다. 슬라이스를 꺼내는 방법을 찾고 있지만 더 이상 슬라이스를 당기는 것을 허용하지 않습니다.슬라이스를 꺼내는 방법 그러나 끌어온 슬라이스 변경을 비활성화하는 방법

예 : 기본을 방지 전파를 정지 또는 작동하지 않습니다 false를 돌려 clickSlice에 리스너를 추가 http://jsfiddle.net/4zg3hmn8/1/

는 이러한 하위 이벤트가 트리거되기 전에 clickSlice 이벤트가 발생합니다. clickSlice 리스너

: http://jsfiddle.net/4zg3hmn8/2/

더 파고 트리거되는 이벤트 차례로 서브 이벤트 동작을 설명하는 clickSlice 메소드를 호출 mouseup 것을 보여준다. 불행히도 mouseup에 리스너를 추가해도 차트에는 아무런 영향을 미치지 않습니다. mouseup 청취자와

: http://jsfiddle.net/4zg3hmn8/3/

이벤트는 개인 자바 스크립트 객체가 아닌 DOM 요소에 추가

, 그래서 나는 (이 크롬 개발 도구로 쉽게 제거 가능) 자바 스크립트를 통해 제거하는 방법을 알아낼 수 없습니다 .

어떻게 해결할 수 있습니까?

답변

1

AmCharts.makeChart을 호출하면 전달 된 config 개체가 기본 기본 차트 개체를 확장하는 데 사용됩니다. 이 조작, 우리는 기본 오브젝트에 사용되는 addEventListener 메소드의 사본을 전달하고 효과적으로 부분을 제거를 덮어 쓸 수 있습니다 우리는 원하지 않는다 :

... 
"startDuration": 0, 
"valueField": "litres", 
"titleField": "country", 
"pulledField": "isPulled", 
"balloon": { 
    "fixedPosition": true 
}, 
"addEventListeners": function(a, b) { 
    var c = this 
    a.mouseover(function(a) { 
     c.rollOverSlice(b, !0, a) 
    }).mouseout(function(a) { 
     c.rollOutSlice(b, a) 
    }).touchend(function(a) { 
     c.rollOverSlice(b, a) 
    }).mouseup(function(a) { 
     alert('ah ah ah... didn\'t say the magic word!') 
    }).contextmenu(function(a) { 
     c.handleRightClick(b, a) 
    }) 
}, 
... 

mouseup 청취자와 함께 : http://jsfiddle.net/4zg3hmn8/4/

+0

재정 내부 방법은 바로 아래 임의 정의되지 않은 동작/파손 요구하고있다 내부의'addEventListeners' 메쏘드에서 뭔가 다른 일이 일어나기를 기대하기 위해 내부 정보가 변경되는 경우 특히주의해야합니다. 당신의 작업을 수행하는 더 안전한 방법에 대한 나의 예를 확인하십시오. – xorspark

1

내부 문서화되지 않은 재정의 메서드 및 이벤트는 정의되지 않은 동작으로 이어질 수 있으므로 권장되지 않습니다. 기본 슬라이스 만 계속 내보내려면 clickSlice 이벤트를 사용하여 clickSlice에 다시 전화하여 사용자의 첫 번째 클릭을 취소 할 수 있습니다. 당신은하지만, 수동 clickSlice 호출을 무시하는 이벤트를 알려줄 수있는 사용자 정의 속성을 설정해야합니다 :

"listeners": [{ 
    event: 'clickSlice', 
    method: function(e) { 
     if (!e.dataItem.ignore) { 
     e.dataItem.ignore = true; //prevent infinite loop 
     e.chart.clickSlice(e.dataItem.index); //call clickSlice to cancel out the user's click 
     e.dataItem.ignore = false; //reset the ignore flag 
     } 
    }, 
    }], 
업데이트 바이올린

: http://jsfiddle.net/4zg3hmn8/5/

+0

좋은 지적. 미래의 파손을 피하기위한 약간의 오버 헤드는 가치있는 무역이다. – Brad