Хотя я использую префикс «::» в своем коде Angular 1.3, я вижу очень длинное сообщение об ошибке в консоли Chrome, которое начинается с этого: Ошибка: [$ rootScope: infdig] 10 $ digest() итераций достиг. Aborting!
Примечание: SVG-графика - это, отображаемая примерно через 10 секунд, но было бы неплохо подавить очень длинное сообщение об ошибке, которое появляется на консоли, что также может уменьшить время рендеринга.
код приведен ниже ... предложения приветствуются :)
SVG-angular.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="svg-angular.js"></script>
</head>
<body>
<div ng-controller="MyCtrl">
<svg width="800" height="500">
<circle once-bind ng-repeat="p in getElems()"
ng-attr-cx="{{::p.cx}}" ng-attr-cy="{{::p.cy}}"
ng-attr-fill="{{::p.fill}}" ng-attr-r="{{::p.r}}" >
</circle>
</svg>
</div>
</body>
</html>
================
SVG-angular.js:
window.App = angular.module('App', []);
App.controller('MyCtrl', function($scope){
$scope.getElems = function(){
var radius=20, maxCount=200, elems=[];
var colors = ["#f00", "#0f0", "#00f"];
for (var i=0; i<maxCount; i++) {
elems.push({cx:i, cy:i, r:radius, fill:colors[i%colors.length]});
}
return elems;
};
});
================
Хотя это будет работать, всегда старайтесь избегать 'ng-init' – Dieterg
Несмотря на оговорку относительно ng-init, полезно знать это решение. –