2013-07-26 2 views
2

Я новичок и в AngularJS и SVG, поэтому, если я делаю что-то ужасно, я извиняюсь.Разбор SVG с AngularJS

Я пытаюсь создать шаблон SVG с AngularJS:

Код скрипку: http://jsfiddle.net/WFxF3/

Шаблон:

<svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg"> 
    <defs> 
     <pattern id="grid" width="{{cubeWidth}}" height="{{cubeHeight}}" patternUnits="userSpaceOnUse"> 
      <path d="M 0 0 L 0 {{cubeHeight}}" fill="none" stroke="gray" stroke-width="1" stroke-opacity="0.5"/> 
      <path d="M 0 0 L {{cubeWidth}} 0" fill="none" stroke="gray" stroke-width="1" stroke-opacity="0.5"/> 
      <!--<rect width="80" height="80" stroke="red" stroke-width="20" stroke-opacity="0.5" fill="white"/>--> 
     </pattern> 

    </defs> 

    <rect width="100%" height="100%" fill="url(#grid)"/> 
</svg> 

Контроллер:

'use strict'; 

angular.module('gridifyApp') 
    .controller('MainCtrl', function ($scope) { 

     var docWidth = document.width; 
     var columns = 12; 
     var cubeWidth = docWidth/columns; 
     var cubeHeight = 44; 

     $scope.cubeWidth = cubeWidth; 
     $scope.cubeHeight = cubeHeight; 
    }); 

Это, кажется, работает и все же я получаю консольную ошибку: console error for angularJS view

Любые идеи, почему?

+0

Возможно, слишком поздно, чтобы помочь вам, но я только что опубликовал статью об AngularJS + SVG. http://www.codeproject.com/Articles/709340/Implementing-a-Flowchart-with-SVG-and-AngularJS –

ответ

16

Проблема SVG в настоящее время анализируется, прежде чем угловатое способно сделать что-нибудь, так что значение с двойными фигурными скобками недопустимо, прежде угловой добирается до него. Команда Angular добавила способ определить какую-то «задержанную привязку». Вы можете использовать его, указав желаемый атрибут ng-attr-. Он ожидает, пока оценка привязки не будет действительной и добавит истинный атрибут с надлежащим значением. В вашем случае это будет:

<svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg"> 
    <defs> 
     <pattern id="grid" ng-attr-width="{{cubeWidth}}" ng-attr-height="{{cubeHeight}}" patternUnits="userSpaceOnUse"> 
      <path ng-attr-d="M 0 0 L 0 {{cubeHeight}}" fill="none" stroke="gray" stroke-width="1" stroke-opacity="0.5"/> 
      <path ng-attr-d="M 0 0 L {{cubeWidth}} 0" fill="none" stroke="gray" stroke-width="1" stroke-opacity="0.5"/> 
      <!--<rect width="80" height="80" stroke="red" stroke-width="20" stroke-opacity="0.5" fill="white"/>--> 
     </pattern> 

    </defs> 

    <rect width="100%" height="100%" fill="url(#grid)"/> 
</svg> 

Там больше не должно быть никаких ошибок. Не забудьте обновить свою угловую версию.

Смежные вопросы