在 Angular nvd3 中以编程方式更新 LineWithFocusChart 的画笔

Programmatically updating brush for LineWithFocusChart in Angular nvd3

我在 Angular-nvd3 指令中使用 "LineWithFocusChart"。该指令的 link 是 here

现在我需要以编程方式更改此图表的焦点,而不是使用下面的焦点图表。对于简单的 nvd3 元素,此问题的答案是 in this Whosebug question。但我需要在此图表的 Angular 指令中实现相同的功能。

我查看了 GitHub 上的文档和问题,但无济于事。有人可以帮忙吗?

笔刷变化的调度函数可以如下:

function (e) {
    $timeout(function () {
        $scope.tc.api.getScope().chart.brushExtent([e.extent[0], e.extent[1])
    }, 400)
}

$scope.tc.api 表示您希望操作的其他图表的 api。它需要作为 'api="tc.api"' 添加到图表指令中,并在控制器中声明,然后才能对其进行操作。

超时很重要,因为指令在加载和激活 API 之前需要一些时间。

编辑 1 @ackuser 已为该解决方案设置了一个 plunkr。 http://plnkr.co/edit/0je3AsF0wdjkFWUyvl02?p=preview