0

ここからNVD3角度ディレクティブを使用して棒グラフを作成しようとしています: http://krispo.github.io/angular-nvd3/#/

私が使用しているグラフはこれです: http://krispo.github.io/angular-nvd3/#/discreteBarChart

これは、ページにグラフを作成するための私の html です (このシナリオでは、コンテキストは重要ではないようです)。

                    <nvd3 options="options"
                          data="top10bar"
                          ng-mouseenter="mouseEnterEvent($event)"></nvd3>

これはコントローラーのコードです (タグが含まれる)

app.controller('BarChartController', function ($scope) {

$scope.options = {
    chart: {
        type: 'discreteBarChart',
        height: 350,
        margin: {
            top: 20,
            right: 20,
            bottom: 60,
            left: 55
        },
        width: 500,
        x: function (d) {
            return d.label;
        },
        y: function (d) {
            return d.value;
        },
        showValues: true,
        transitionDuration: 500,
        xAxis: {
            axisLabel: 'X Axis'
        },
        yAxis: {
            axisLabel: 'Y Axis',
            axisLabelDistance: 30
        },
        tooltips: false,
        discretebar: {
            rectClass: ['discreteBar', 'tableRow']
        },
        interactive: true
    }
};

$scope.mouseEnterEvent = function (event) {

    console.log("EVENT!");
    console.log(event);
};

$scope.$on('elementMouseover.tooltip', function (event, data) {
    console.log("In scope.on");
    console.log(event);
    console.log(data);
    console.log("end");
});

$scope.$on('tooltipShow.directive', function (angularEvent, event) {
    angularEvent.targetScope.$parent.event = event;
    angularEvent.targetScope.$parent.$digest();
});

コントローラーの下部に表示される 3 つのイベント ハンドラーのうち、nvd3 で ng-mouseenter オプションが指定されているため、最初のハンドラーのみが機能します。ただし、これは、マウスがチャート div 全体に入ると機能します。私が望むのは、個々のバーでマウスオーバーを検出して、それを強調表示してからビューの別の部分を強調表示できるようにすることです。

ここで私が達成しようとしていることをどのように実行しますか? どんな助けでも大歓迎です、乾杯!

4

1 に答える 1

0

私は次のように書いたバーのイベントを検出するために、同じ問題を抱えていました。

$scope.mouseEnterEvent = function (event) {
    if (event.target.localName === 'rect') {
        /// Do your operation here.
    }
};

それは私のために働いた。イベントをチャート自体に渡すためのより良い方法が見つかった場合はお知らせください。

于 2016-04-23T21:02:56.490 に答える