2016-05-13 79 views
0

我想在使用angularJS的HTML畫布中創建一些圓圈。 我知道如何做到這一點使用JavaScript,但我是新的angularJS和任何幫助,非常感謝。使用AngularJS創建HTML畫布元素

代碼:

<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

喜請擊鏈接:https://github.com/ActivKonnect/angular-circles 也http://htmlpreview.github.io/?https://github.com/ActivKonnect/angular-circles/ blob/master/example/index.html –

+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> 

這將繪製在畫布內兩個圓圈。 希望這有助於。

+0

非常感謝...非常感謝.. :) –

+0

您忘記了在''標籤中包含'drawCircle'。 –