Javascript 使用highcharts ng以编程方式缩小

Javascript 使用highcharts ng以编程方式缩小,javascript,jquery,angularjs,highcharts,highcharts-ng,Javascript,Jquery,Angularjs,Highcharts,Highcharts Ng,我和海格一起工作 通过查看源代码,我看到指令中有一些关于scope.on的东西,我可以使用它来广播。例如 scope.$on('highchartsng.reflow', function () { chart.reflow(); }); 然后在我的控制器中,我可以调用示波器上的watch函数: $scope.$watch("someElement", function(nV,oV){ if(nV===oV) return; $scope.$broadcast('highchart

我和海格一起工作

通过查看源代码,我看到指令中有一些关于scope.on的东西,我可以使用它来广播。例如

scope.$on('highchartsng.reflow', function () {
  chart.reflow();
});
然后在我的控制器中,我可以调用示波器上的watch函数:

$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控制它呢?(甚至可以让jQuery接管指令的某些方面,而不是依赖angular来完成所有事情吗?

。正如上面的评论所说,确保您在正确的范围内调用它

您可以使用jquery获取图表的句柄,然后调用任何您想要的方法。见:


我很难添加这些类型的事件,因为它们将应用于页面上的所有图表,而且似乎不是一种很有角度的做事方式。

两件事:1。即使这不是“角度方式”,您也可以使用angular.element(在一个指令中,我相信您可以只注入$element)2来使用DOM操作。检查您的广播范围是否正确。检查是否存在这种情况的简单方法是广播到$rootScope而不是$scope,并在$on函数中记录一些内容,以确保您接收到事件。感谢Pablojim和@ruedamanuel的输入。我以为我疯了。原来我只是指向highcharts-ng.min.js文件,需要将其切换回我正在修改的文件。。。总有一天,我会振作起来,不再像个傻瓜。再次感谢:)@Pablojim,嘿,你能帮我调查一下我关于highcharts ng的问题吗