0

Google 차트를 작성하는 지시문이 있습니다. 지시문이 차트에서 이벤트를 받으면 컨트롤러의 범위에서 이벤트 처리기를 트리거하고 싶습니다.Angular 지시어에 수신기를 추가하려면 어떻게해야합니까?

샘플 : 내 마크 업 http://plnkr.co/edit/yn4KuQfrYvlQNbPSWk3Q?p=preview

: 내 지시에

<div column-chart="chartData" row-selected="rowSelected(index)"></div> 

:

$scope.rowSelected = function (index) { 
    console.log('controller#rowSelected', index); 
    // the function I want to ultimately be called 
}; 

내가 1로이 작업을 수행 할 수 있습니다 내 컨트롤러에서

google.visualization.events.addListener(chart, 'select', function() { 
    console.log('directive#select', chart.getSelection()); 
    // call the function defined in the markup for "row-selected" 
}); 

지령? 차트 지시문에서 행 선택 지시문을 알 수 있습니까? 도와 주시면 감사하겠습니다.

+0

A는 후속,으로 할 수 있습니다으로 : 그는 업데이트와 함께이

그래서 차트에서 이벤트 리스너가 할 수있는 사용 범위 다이제스트주기를 실행합니다 범위 및 "&"및 "="을 사용하여 요청했습니다. 나는 어떤 파고를하고 그것이 어떻게 작동 하는지를 이해하고 잘하면 답변으로 이것을 업데이트 할 것입니다. – blu

+0

다음은 작업 개정판입니다. http://plnkr.co/edit/3C5xNqaWOWTNtQLZpmx6?p=preview. 이것은 repo를보고 난 결과입니다 (https://github.com/bouil/angular-google-chart). 나는 대신 그의 지시어를 사용하는 것으로 전환하고 있지만,이 과정은 지시문에 대한 더 나은 통찰력을 제공하여 시간을 보냈다. – blu

답변

1

당신은 당신이 을 rowSelected하지 하드 코드 당신이 좀 더 유연하게하는 속성을 통해 그것을에서 통과 할 수 원하는 경우 범위 기능에 대한 액세스

google.visualization.events.addListener(chart, 'select', function() { 
    console.log('directive#select', chart.getSelection()); 
    scope.rowSelected(chart.getSelection().row) 
}); 

을 rowSelected 있습니다.

3

범위를 변경하려는 각도 범위 밖에있는 코드가있을 때마다 $apply을 사용하여 각도를 지정해야합니다.

google.visualization.events.addListener(chart, 'select', function() { 
    scope.$apply(function(){ 
     scope.rowSelected=chart.getSelection() 
    }) 

}); 

DEMO

+0

이 방법으로 직접 범위를 수정하고 apply를 사용했지만 이상하게 보였습니다. 내 컨트롤러에 해당 기능에 대한 속성을 사용하지 않아야합니까? 무엇에 대한 – blu

+0

속성? 달성하고자하는 것이 정확히 무엇인지 알 수 없음 – charlietfl

+0

범위로 직접 작업하는 것이 아니라 이벤트 처리기를 정의하기 위해 태그의 속성을 사용합니다. – blu

관련 문제