AngularJS动态添加ngclick
AngularJS dynamically add ngclick
我正在尝试动态添加 ng-click 我知道如何在 Jquery 中完成,但不知道如何在 AngularJs 中完成。我的代码在 canvas 上绘制了一系列点,我希望每个点都可以点击,我不确定如何在 Angular 中完成。
AngularJS代码:
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
$scope.data = [
[21,50],
[30,150],
[45,75],
[98,121],
[67,78],
[35,80]
];
$scope.addData = function() {
for(i=0; i<$scope.data.length; i++){
context.beginPath();
context.arc($scope.data[i][0], $scope.data[i][1], 10, 0, 2*Math.PI);
context.fillStyle = "#ccddff";
context.fill();
context.lineWidth = 1;
context.strokeStyle = "#666666";
context.stroke();
}
}
HTML代码:
<canvas id="canvas" style="border: 1px gray solid; float: left;> width:500px; height:500px;"></canvas>
我认为您不应该从 AngularJS 控制器生成视图部件。
您应该只生成数据,这些数据可以通过例如 ng-repeat 指令包含在您的 HTML 中,然后创建一个自定义指令来处理数据。
生成的 HTML 可能是这样的:
<my-graph>
<my-plot ng-repeat="MyPlotCollectionInMyController" />
</my-graph>
然后创建自定义指令来处理 "my-plot" 或 "my-graph" 元素。
Official documentation.
很好的解释和例子here。
自定义指令的原理是处理属性或在您的情况下 HTML 元素,以更改某些内容:您可以枚举它们的 children,将元素 "my-graph" 完全替换为完全不同 HTML.
创建自定义指令并不容易。一旦你想包含一个 "ng-click",这是另一个指令,你必须相应地管理优先级:"ng-click" 指令必须在你的自定义指令之后执行。
不确定你的推理是否正确,但无论如何......
我相信你想使用 $compile 服务
我正在尝试动态添加 ng-click 我知道如何在 Jquery 中完成,但不知道如何在 AngularJs 中完成。我的代码在 canvas 上绘制了一系列点,我希望每个点都可以点击,我不确定如何在 Angular 中完成。
AngularJS代码:
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
$scope.data = [
[21,50],
[30,150],
[45,75],
[98,121],
[67,78],
[35,80]
];
$scope.addData = function() {
for(i=0; i<$scope.data.length; i++){
context.beginPath();
context.arc($scope.data[i][0], $scope.data[i][1], 10, 0, 2*Math.PI);
context.fillStyle = "#ccddff";
context.fill();
context.lineWidth = 1;
context.strokeStyle = "#666666";
context.stroke();
}
}
HTML代码:
<canvas id="canvas" style="border: 1px gray solid; float: left;> width:500px; height:500px;"></canvas>
我认为您不应该从 AngularJS 控制器生成视图部件。 您应该只生成数据,这些数据可以通过例如 ng-repeat 指令包含在您的 HTML 中,然后创建一个自定义指令来处理数据。
生成的 HTML 可能是这样的:
<my-graph>
<my-plot ng-repeat="MyPlotCollectionInMyController" />
</my-graph>
然后创建自定义指令来处理 "my-plot" 或 "my-graph" 元素。 Official documentation.
很好的解释和例子here。
自定义指令的原理是处理属性或在您的情况下 HTML 元素,以更改某些内容:您可以枚举它们的 children,将元素 "my-graph" 完全替换为完全不同 HTML.
创建自定义指令并不容易。一旦你想包含一个 "ng-click",这是另一个指令,你必须相应地管理优先级:"ng-click" 指令必须在你的自定义指令之后执行。
不确定你的推理是否正确,但无论如何...... 我相信你想使用 $compile 服务