我正在尝试使用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',函数($ 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();
});
在控制器底部可以看到的三个事件处理程序中,只有第一个可用,因为我在nvd3中指定了ng-mouseenter选项。但是,当鼠标进入整个图表div时,这种方法有效。我想要的是在单个条上检测鼠标,以便我可以突出显示它,然后突出显示我视图的另一部分。
你会如何去做我想在这里实现的目标? 任何帮助都非常感谢,欢呼!
答案 0 :(得分:0)
我有同样的问题,要检测我写的以下栏上的事件。
$scope.mouseEnterEvent = function (event) {
if (event.target.localName === 'rect') {
/// Do your operation here.
}
};
它对我有用。希望它会对你有所帮助,如果你找到更好的方法将事件传递给图表本身,请告诉我。