使用 svg 和 ng-repeat 在大矩形内制作多个小矩形

Make multiple small rectangles inside big rectangle using svg and ng-repeat

我有这段代码,我需要在一个大矩形内显示多个小矩形,我需要多次执行整个过程。

这是我的数据:

"data": {
  "rect1": { 
     "a":[10,20],
     "b":[35,10] 
   },
   "rect2": {
     "y":[25,10],
     "z":[55,20] 
   }
}

此数据应分别生成两个矩形 rect1 和 rect2 以及每个矩形内的两个矩形 a、b 和 y、z。每个小矩形都有起始位置 x 和该小矩形的宽度,例如 a 从 x 10 开始,宽度 = 20。

<ul>
    <li ng-repeat="(rect,coords) in data">
    <svg>
    <rect x=1 y=1 width=1000 height=50 style="fill:grey;" />
    <span ng-repeat="coord in coords">
    <rect x={{coord[0]}} y=1 width={{coord[1]}} height=50 style="fill:blue;" />             


enter code here

但是这段代码不起作用,因为我在两个标签之间添加了 ng-repeat 行。

image of what the final result should look like

我在 powerpoint 中制作了这张图片,所以请忽略背景。

你们非常接近。您不能在 SVG 中使用 <span>。但其余大部分都是正确的。

此外,最好使用 ng-attr-x="{{value}} 而不是 x="{{value}}。否则 SVG 解析器将抛出错误,因为它不理解字符串 "{{value}}".

这是一个工作示例。

var app = angular.module('myApp', [])

app.controller("AppCtrl", ["$scope", function($scope) {
  
  $scope.data = {
    "rect1": { 
       "a":[10,20],
       "b":[35,10] 
     },
     "rect2": {
       "y":[25,10],
       "z":[55,20] 
     }
  };

}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myApp">

  <ul ng-controller="AppCtrl">
    <li ng-repeat="(rectName, coords) in data">
      <svg id="{{rectName}}" width="100%" height="50">
        <rect x="1" y="1" width="1000" height="50"
              style="fill: lightgrey;" />
        <rect ng-repeat="(label, coord) in coords"
              ng-attr-x="{{coord[0]}}" y="1"
              ng-attr-width="{{coord[1]}}" height="50"
              style="fill: blue;" />
        <text ng-repeat="(label, coord) in coords"
              ng-attr-x="{{coord[0]}}" y="25"
              style="fill: white;">{{label}}</text>
      </svg>
    </li>
  </ul>

</div>