如何将点击事件添加到 angular js 指令以绘制 flot 条形图
how to add click event to angular js directive for plotting flot bar chart
我对 angularjs 和浮动图表还很陌生。我正在尝试将点击事件添加到我的堆叠条形图,这样一旦我点击一个堆叠它就会显示类别信息,但我不确定是否做得对。
请帮忙看看
我已经在 angularjs 指令中绘制了我的图表
请在此处查看 http://jsfiddle.net/6h1gL2sh/10/
App.directive('chart', function () {
return {
restrict: 'EA',
link: function (scope, elem, attrs) {
var chart = null,
options = {
series: {
stack: true,
bars: {
show: true,
clickable: true,
barWidth: 0.1,
align: "center"
}
},
axisLabels: {
show: true
},
xaxis: {
axisLabel: 'Products',
axisLabelUseCanvas: true,
axisLabelFontSizePixels: 12,
axisLabelPadding: 5,
mode: "categories",
tickLength: 0
},
yaxis: {
axisLabel: 'Pass/Fail Count',
axisLabelUseCanvas: true,
axisLabelFontSizePixels: 12,
axisLabelPadding: 5
},
grid: {
hoverable: true,
clickable: true
}
}
var data = scope[attrs.ngModel];
scope.$watch(attrs.ngModel, function (v) {
if (!chart) {
chart = $.plot(elem, v, options);
elem.show();
} else {
chart.setData(v);
chart.setupGrid();
chart.draw();
}
});
$(elem).bind("plotclick", function (event, pos, item) {
scope.$apply(function () {
if (item) {
scope.dis = item.series.xaxis.categories[item.dataIndex].label
}
});
});
}
};
});
由于您试图通过值获取对象的 Key,因此您无法使用方括号表示法真正将其作为数组访问。我使用了一个可以在这个 SO 问题上找到的函数:JavaScript object get key by value
那我干脆把你的点击部分改成了这样:
elem.bind("plotclick", function (event, pos, item) {
if(item){
scope.dis= getKeyByValue(item.series.xaxis.categories, item.dataIndex);
scope.$apply();
}
});
我对 angularjs 和浮动图表还很陌生。我正在尝试将点击事件添加到我的堆叠条形图,这样一旦我点击一个堆叠它就会显示类别信息,但我不确定是否做得对。 请帮忙看看
我已经在 angularjs 指令中绘制了我的图表
请在此处查看 http://jsfiddle.net/6h1gL2sh/10/
App.directive('chart', function () {
return {
restrict: 'EA',
link: function (scope, elem, attrs) {
var chart = null,
options = {
series: {
stack: true,
bars: {
show: true,
clickable: true,
barWidth: 0.1,
align: "center"
}
},
axisLabels: {
show: true
},
xaxis: {
axisLabel: 'Products',
axisLabelUseCanvas: true,
axisLabelFontSizePixels: 12,
axisLabelPadding: 5,
mode: "categories",
tickLength: 0
},
yaxis: {
axisLabel: 'Pass/Fail Count',
axisLabelUseCanvas: true,
axisLabelFontSizePixels: 12,
axisLabelPadding: 5
},
grid: {
hoverable: true,
clickable: true
}
}
var data = scope[attrs.ngModel];
scope.$watch(attrs.ngModel, function (v) {
if (!chart) {
chart = $.plot(elem, v, options);
elem.show();
} else {
chart.setData(v);
chart.setupGrid();
chart.draw();
}
});
$(elem).bind("plotclick", function (event, pos, item) {
scope.$apply(function () {
if (item) {
scope.dis = item.series.xaxis.categories[item.dataIndex].label
}
});
});
}
};
});
由于您试图通过值获取对象的 Key,因此您无法使用方括号表示法真正将其作为数组访问。我使用了一个可以在这个 SO 问题上找到的函数:JavaScript object get key by value
那我干脆把你的点击部分改成了这样:
elem.bind("plotclick", function (event, pos, item) {
if(item){
scope.dis= getKeyByValue(item.series.xaxis.categories, item.dataIndex);
scope.$apply();
}
});