如何使用Aurelia创建基于SVG的图形

如何使用Aurelia创建基于SVG的图形,aurelia,Aurelia,我在这里创建了一些Angular+SVG图形示例: 我在哪里可以找到一个代码示例,说明如何将这些代码示例转换为Aurelia 下面是一个示例HTML页面: <!DOCTYPE html> <html ng-app="App"> <head> <meta chartset="utf-8"> <title>SVG and Angular</title> <script src="http://cdn

我在这里创建了一些Angular+SVG图形示例:

我在哪里可以找到一个代码示例,说明如何将这些代码示例转换为Aurelia

下面是一个示例HTML页面:

<!DOCTYPE html>
<html ng-app="App">
 <head>
   <meta chartset="utf-8">
   <title>SVG and Angular</title>

   <script
src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.0/angular.js">
   </script>
   <script src="ArchOvals1.js"></script>
 </head>

 <body> 
   <div ng-controller="MyCtrl">
     <svg width="800" height="500" ng-init="elems = getElems()">
       <ellipse ng-repeat="p in elems"
          ng-attr-cx="{{::p.cx}}" ng-attr-cy="{{::p.cy}}"
          ng-attr-rx="{{::p.rx}}" ng-attr-ry="{{::p.ry}}"
          ng-attr-fill="{{::p.fill}}">
       </ellipse>
     </svg>
   </div>
 </body>
</html>
window.App = angular.module('App', []);

App.controller('MyCtrl', function($scope){
  $scope.getElems = function(){
    var majorAxis=40, minorAxis=80, maxCount=200, elems=[];
    var colors = ["#f00", "#0f0", "#00f"];

    var basePointX  = 250, basePointY = 250;
    var currentX    = 0, currentY     = 0;
    var offsetX     = 0, offsetY      = 0;
    var radius      = 0, spiralCount  = 4;
    var Constant    = 0.25, angle     = 0;
    var deltaAngle  = 1, maxAngle     = 721;

    var offsetX=0, offsetY=0, index=0;
    var majorAxis=40, minorAxis=60, elems=[], color="";
    var colors=["#FF0000","#0000FF","#FF00FF","#FF0000"];

    for(angle=0; angle<maxAngle; angle+=deltaAngle) {
      radius   = Constant*angle;
      offsetX  = radius*Math.cos(angle*Math.PI/180);
      offsetY  = radius*Math.sin(angle*Math.PI/180);
      currentX = basePointX+offsetX;
      currentY = basePointY-offsetY;

      // calculate index into the colors array
      index = Math.floor(angle/deltaAngle);

      // append an (x,y) pair of values that
      // represent the upper-left vertex
      elems.push({cx:currentX,  cy:currentY,
                  rx:majorAxis, ry:minorAxis,
                  fill:colors[index%2]});
    }

    return elems;
  };
});

SVG与角度
HTML页面的示例JS文件如下:

<!DOCTYPE html>
<html ng-app="App">
 <head>
   <meta chartset="utf-8">
   <title>SVG and Angular</title>

   <script
src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.0/angular.js">
   </script>
   <script src="ArchOvals1.js"></script>
 </head>

 <body> 
   <div ng-controller="MyCtrl">
     <svg width="800" height="500" ng-init="elems = getElems()">
       <ellipse ng-repeat="p in elems"
          ng-attr-cx="{{::p.cx}}" ng-attr-cy="{{::p.cy}}"
          ng-attr-rx="{{::p.rx}}" ng-attr-ry="{{::p.ry}}"
          ng-attr-fill="{{::p.fill}}">
       </ellipse>
     </svg>
   </div>
 </body>
</html>
window.App = angular.module('App', []);

App.controller('MyCtrl', function($scope){
  $scope.getElems = function(){
    var majorAxis=40, minorAxis=80, maxCount=200, elems=[];
    var colors = ["#f00", "#0f0", "#00f"];

    var basePointX  = 250, basePointY = 250;
    var currentX    = 0, currentY     = 0;
    var offsetX     = 0, offsetY      = 0;
    var radius      = 0, spiralCount  = 4;
    var Constant    = 0.25, angle     = 0;
    var deltaAngle  = 1, maxAngle     = 721;

    var offsetX=0, offsetY=0, index=0;
    var majorAxis=40, minorAxis=60, elems=[], color="";
    var colors=["#FF0000","#0000FF","#FF00FF","#FF0000"];

    for(angle=0; angle<maxAngle; angle+=deltaAngle) {
      radius   = Constant*angle;
      offsetX  = radius*Math.cos(angle*Math.PI/180);
      offsetY  = radius*Math.sin(angle*Math.PI/180);
      currentX = basePointX+offsetX;
      currentY = basePointY-offsetY;

      // calculate index into the colors array
      index = Math.floor(angle/deltaAngle);

      // append an (x,y) pair of values that
      // represent the upper-left vertex
      elems.push({cx:currentX,  cy:currentY,
                  rx:majorAxis, ry:minorAxis,
                  fill:colors[index%2]});
    }

    return elems;
  };
});
window.App=angular.module('App',[]);
应用程序控制器('MyCtrl',函数($scope){
$scope.getElems=function(){
变量majorAxis=40,minorAxis=80,maxCount=200,elems=[];
变量颜色=[“#f00”、“#0f0”、“#00f”];
var basePointX=250,basePointY=250;
var currentX=0,currentY=0;
var offsetX=0,offsetY=0;
变量半径=0,螺旋计数=4;
var常数=0.25,角度=0;
变量deltaAngle=1,maxAngle=721;
var offsetX=0,offsetY=0,index=0;
变量majorAxis=40,minorAxis=60,元素=[],颜色=”;
变量颜色=[“FF0000”、“0000FF”、“FF00FF”、“FF0000”];

for(angle=0;angle使用Aurelia绑定到SVG与绑定到任何其他HTML元素没有区别。我们目前有一个优秀的for绑定到IE中的style属性,包括对其他SVG属性的支持,但除此之外,它与绑定到输入标记或类似的东西没有区别

以下是svg代码(svg.html):


这是视图模型(svg.js)。注意,我刚刚复制了您的代码并将其设置为ES6:

export class SVG{
  getElems() {
    var majorAxis=40, minorAxis=80, maxCount=200, elems=[];
    var colors = ["#f00", "#0f0", "#00f"];

    var basePointX  = 250, basePointY = 250;
    var currentX    = 0, currentY     = 0;
    var offsetX     = 0, offsetY      = 0;
    var radius      = 0, spiralCount  = 4;
    var Constant    = 0.25, angle     = 0;
    var deltaAngle  = 1, maxAngle     = 721;

    var offsetX=0, offsetY=0, index=0;
    var majorAxis=40, minorAxis=60, elems=[], color="";
    var colors=["#FF0000","#0000FF","#FF00FF","#FF0000"];

    for(angle=0; angle<maxAngle; angle+=deltaAngle) {
      radius   = Constant*angle;
      offsetX  = radius*Math.cos(angle*Math.PI/180);
      offsetY  = radius*Math.sin(angle*Math.PI/180);
      currentX = basePointX+offsetX;
      currentY = basePointY-offsetY;

      // calculate index into the colors array
      index = Math.floor(angle/deltaAngle);

      // append an (x,y) pair of values that
      // represent the upper-left vertex
      elems.push({cx:currentX,  cy:currentY,
                  rx:majorAxis, ry:minorAxis,
                  fill:colors[index%2]});
    }

    return elems;
  }
}
导出类SVG{
getElems(){
变量majorAxis=40,minorAxis=80,maxCount=200,elems=[];
变量颜色=[“#f00”、“#0f0”、“#00f”];
var basePointX=250,basePointY=250;
var currentX=0,currentY=0;
var offsetX=0,offsetY=0;
变量半径=0,螺旋计数=4;
var常数=0.25,角度=0;
变量deltaAngle=1,maxAngle=721;
var offsetX=0,offsetY=0,index=0;
变量majorAxis=40,minorAxis=60,元素=[],颜色=”;
变量颜色=[“FF0000”、“0000FF”、“FF00FF”、“FF0000”];
对于(角度=0;角度