私は Highcharts-ng で作業しています https://github.com/pablojim/highcharts-ng
ソース コードに目を通すと、ブロードキャストに使用できる scope.$on のディレクティブでいくつかのことが行われていることがわかります。例えば...
scope.$on('highchartsng.reflow', function () {
chart.reflow();
});
次に、コントローラーで、スコープでウォッチ関数を呼び出すことができます。
$scope.$watch("someElement", function(nV,oV){
if(nV===oV) return;
$scope.$broadcast('highchartsng.reflow');
});
これはうまく機能し、非常に理にかなっています。私が理解できないのは、ディレクティブに追加のものを追加できない理由です。たとえば、ディレクティブから .reflow() を呼び出すことができれば、同じように簡単に .zoomOut() を呼び出すことができるはずですよね?
// This doesn't work when I add it to the directive..
scope.$on('zoomOut', function() {
chart.zoomOut();
});
// And broadcast the change from a scope in the controller
$scope.$watch('someElement', function(nV,oV){
if(nV===oV) return;
$scope.$broadcast('zoomOut');
});
これを機能させるために何ができますか?それができない場合、代わりにjQueryで制御するにはどうすればよいですか? (すべてをangularに依存するのではなく、jQueryにディレクティブの特定の側面を引き継がせることさえ可能ですか?)