【问题标题】:events is not working in angularjs fusion charts事件在 angularjs 融合图表中不起作用
【发布时间】:2015-07-25 23:41:52
【问题描述】:

我正在尝试使用角度在融合图表的 pie2d 图表中捕获 dataplotClick 事件。我指的是这个例子Bar chart with events。当我将对象events 直接创建到scope 时,它就可以工作了。

工作

$scope.events = {
                        dataplotClick:function(evnt,data) {
                            var lbl = data.toolText.split(",")[0];
                            console.log(lbl);
                            $scope.$apply(function() {
                                $scope.stFilter = {'EV_STATE_NUMBER':lbl};
                            });
                        }
                    }

不工作

$scope.my = {};
$scope.my.events = {
                    dataplotClick:function(evnt,data) {
                        var lbl = data.toolText.split(",")[0];
                        console.log(lbl);
                        $scope.$apply(function() {
                            $scope.stFilter = {'EV_STATE_NUMBER':lbl};
                        });
                    }
                }

HTML

<fusioncharts 
      width="90%" 
      height="100%"
      type="pie2d"
      datasource="{{fcb.effiPerformance}}"
      events="my.events" // Not working
      events="events" // Working
> </fusioncharts>

由于ng-repeat 中有多个图表,我必须为每个图表附加事件函数。如果有人知道如何实现它,请帮助我。

【问题讨论】:

    标签: javascript angularjs fusioncharts


    【解决方案1】:

    FusionCharts 角度插件只能访问控制器范围内的直接子对象。 参考https://github.com/fusioncharts/angular-fusioncharts/blob/master/src/angular-fusioncharts.js源代码第346行以下代码。

    if (scope.$parent[attrs.events]) {
    

    要为同一控制器内的不同图表定义不同的事件,您可以定义不同的事件对象名称。例如-

    //Controller
    $scope.chart1_events = {
          dataplotClick:function(evnt,data) {
              var lbl = data.toolText.split(",")[0];
              console.log(lbl);
              $scope.$apply(function() {
                  $scope.stFilter = {'EV_STATE_NUMBER':lbl};
              });
          }
    }
    
    //HTML
    <fusioncharts 
      width="90%" 
      height="100%"
      type="pie2d"
      datasource="{{fcb.effiPerformance}}"
      events="chart1_events"
    > </fusioncharts>
    

    示例-http://jsfiddle.net/ayanonly1/57gxf5e1/

    更新:- 该问题已在插件 V3.0 中修复。

    【讨论】:

    • 我知道这一点。我已经在我的问题中说过直接事件对象工作正常。由于我有多个对象,我想为每个对象绑定事件。
    • 你看样了吗?你想要的已经在那里完成了。
    • @JayShukla,请检查示例,让我知道这是否解决了您的目的。
    • 我不知道一个对象中有多少个对象。我不能使用这种方法。感谢您的替代解决方案。
    • 不太确定您的项目。但我认为这可能会自动完成。这是一个开源项目。我已经标记了您必须进行更改以适应更深层次对象的访问的源。如果您进行更改并发送拉取请求,这将是很棒的。如果您认为反对票不适用,您可以将其删除。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    相关资源
    最近更新 更多