我想使用angularJS在html画布中创建一些圆圈。 我知道如何使用javascript做同样的事情,但我是angularJS的新手,非常感谢任何帮助。
代码:
<title>Home Page</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js"></script>
</head>
<body>
<div ng-app="myapp" ng-controller="myctrl">
<canvas id="canvas" width="2100" height="900"
style="border: 1px solid #d3d3d3;">
</canvas>
</div>
<script>
var $scope;
var app = angular.module('myapp', []);
myapp.controller("myctrl", function($scope){
var c1 = document.getElementById("canvas");
var ctx = c1.getContext("2d");
ctx.beginPath();
ctx.arc(500, 500, 50, 0, 2 * Math.PI, false);
ctx.lineWidth = 0.2;
ctx.stroke();
ctx.fill();
})
</script>
</body>
答案 0 :(得分:0)
实际上你的代码有效。主要问题是您尝试通过错误的变量(myapp
而非app
)访问角度应用。这是运行代码的jsbin。
但更改控制器中的DOM为bad practice。使用directive访问DOM对象。
我用指令创建了一个简单的example。
app.directive('drawCircle', function() {
return {
scope: {
x: '@x',
y: '@y'
},
link: function(scope, element, attrs) {
var x = parseInt(scope.x);
var y = parseInt(scope.y);
var canvas = element.parent();
var ctx = canvas[0].getContext("2d");
ctx.beginPath();
ctx.arc(x, y, 50, 0, 2 * Math.PI, false);
ctx.lineWidth = 0.2;
ctx.stroke();
ctx.fill();
}
}
});
该指令采用两个参数来设置画布中圆圈的位置:
<canvas id="canvas" width="2100" height="900" style="border: 1px solid #d3d3d3;">
<draw-circle x="500" y="500"></draw-circle>
<draw-circle x="200" y="500"></draw-circle>
</canvas>
这将在画布内绘制两个圆圈。 希望这会有所帮助。