2017-01-25 71 views
0

在我的項目,我使用內聯svgs如下:聯SVG作爲指令(火狐問題)

HTML

<div style="display: none"> 
    <svg xmlns="http://www.w3.org/2000/svg"> 
    <symbol id="dropdown" viewBox="0 0 3.359 1.929"><path d="M1.68 1.929a.29.29 0 0 1-.204-.083L.085.484a.28.28 0 0 1 0-.401.293.293 0 0 1 .409 0L1.68 1.244 2.865.083a.294.294 0 0 1 .41 0 .28.28 0 0 1 0 .401l-1.39 1.361a.3.3 0 0 1-.205.084z"></path></symbol> 
    </svg> 
</div> 
<div one-svg svg-href="'dropdown'"></div> 

JS

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

app.directive('oneSvg', function() { 
    return { 
     templateUrl: 'inline-svg.html', 
     scope: { 
      svgHref: "=", 
      svgClass: "=" 
     } 
    }; 
}); 

inline- svg.html

<svg ng-class="svgClass"> 
    <use ng-href="{{ '#' + svgHref }}" ng-attr-href="{{ '#' + svgHref }}" href=""></use> 
</svg> 

這裏是fiddle

上面創建的指令工作只能在Chrome和IE10但不是在火狐(V 50.1.0)

如果我添加沒有指令的內聯SVG,它在Firefox中工作正常。請幫助我在Firefox中做出指示。

回答

1

查看此PLUNKER中的更改。
它在FireFox,Chrome和Safari上爲我工作。

HTML:

<svg style="display:none;" xmlns="http://www.w3.org/2000/svg" <svg style="display:none;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"> 
    <defs> 
    <symbol id="dropdown" viewBox="0 0 3.359 1.929"> 
     <path d="M1.68 1.929a.29.29 0 0 1-.204-.083L.085.484a.28.28 0 0 1 0-.401.293.293 0 0 1 .409 0L1.68 1.244 2.865.083a.294.294 0 0 1 .41 0 .28.28 0 0 1 0 .401l-1.39 1.361a.3.3 0 0 1-.205.084z"></path> 
    </symbol> 
    </defs> 
</svg> 

<div one-svg="dropdown"></div> 

指令:

app.directive('oneSvg', function() { 
    return { 
     template: '<svg ng-class="svgClass"><use xlink:href="{{ \'#\' + href }}"></use></svg>', 
     scope: { 
      href: "@oneSvg", 
      svgClass: "=?" 
     } 
    }; 
}); 
+0

感謝。問題是我在該模板中使用了'ng-attr-href'和'ng-href'屬性。 –