你能告诉我如何在指令中给出click事件吗?我使用highchart.js(条形图)创建一个图表。我想在该图表中给出点击事件?
我发现他们使用jquery就是这样。但是我们如何在指令中给出?点击事件示例
我们如何在out指令中给出click事件? 这是我的代码 http://plnkr.co/edit/FtDfeyd6fjHL3RNwzyCn?p=preview
.directive('chart', function() {
return {
restrict: 'E',
template: '<div></div>',
scope: {
chartData: "=value",
chartObj: "=?"
},
transclude: true,
replace: true,
link: function($scope, $element, $attrs) {
//Update when charts data changes
$scope.$watch('chartData', function(value) {
if (!value)
return;
// Initiate the chartData.chart if it doesn't exist yet
$scope.chartData.chart = $scope.chartData.chart || {};
// use default values if nothing is specified in the given settings
$scope.chartData.chart.renderTo = $scope.chartData.chart.renderTo || $element[0];
if ($attrs.type)
$scope.chartData.chart.type = $scope.chartData.chart.type || $attrs.type;
if ($attrs.height)
$scope.chartData.chart.height = $scope.chartData.chart.height || $attrs.height;
if ($attrs.width)
$scope.chartData.chart.width = $scope.chartData.chart.type || $attrs.width;
$scope.chartObj = new Highcharts.Chart($scope.chartData);
});
}
};
})
答案 0 :(得分:2)
对不起。这是您的问题的解决方案。如果您使用的是库,那么它们应该以角度为您提供回叫或任何其他可选功能。
如果找不到,并且发现jquery,则可以使用相同的jquery代码在angular中使用相同的jquery功能。
我如何处理Angular :-(?这里有角度,使用指令。
代码如下:
HTML
<div directive-name id="container" style="height: 400px"></div>
指令
.directive("directiveName", [function () {
return {
restrict: "A",
link: function ($scope, $element, $attributes) {
var char=$attributes.id;
$("#"+char).highcharts({
chart: {
type: 'column'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
plotOptions: {
series: {
cursor: 'pointer',
point: {
events: {
click: function () {
alert('Category: ' + this.category + ', value: ' + this.y);
}
}
}
}
},
series: [{
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}]
});
}
}
}]);
为你工作:
答案 1 :(得分:0)
在jquery示例中,您将直接传递函数,如
click: function () {
alert('Category: ' + this.category + ', value: ' + this.y);
}
但是在角度示例中,您将作为JSON字符串传递。所以它无法解析函数。
"events": {
"click": "function () {alert('Category: ' + this.category + ', value: ' + this.y)}"
}
因此,在您的角度示例中,直接传递输入,就像您在jquery示例中所做的那样。那么你的代码就可以了。