内联 svg 作为指令(Firefox 问题)
Inline svg as directive (Firefox issue)
在我的项目中,我使用内联 svgs 如下:
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: "="
}
};
});
内联-svg.html
<svg ng-class="svgClass">
<use ng-href="{{ '#' + svgHref }}" ng-attr-href="{{ '#' + svgHref }}" href=""></use>
</svg>
这是fiddle
上面创建的指令仅在 Chrome 和 IE10 中有效,但在 Firefox (v 50.1.0).
中无效
如果我在没有指令的情况下添加内联 SVG,它在 Firefox 中工作正常。请帮助我使指令在 Firefox 中也能正常工作。
查看此 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: "=?"
}
};
});
在我的项目中,我使用内联 svgs 如下:
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: "="
}
};
});
内联-svg.html
<svg ng-class="svgClass">
<use ng-href="{{ '#' + svgHref }}" ng-attr-href="{{ '#' + svgHref }}" href=""></use>
</svg>
这是fiddle
上面创建的指令仅在 Chrome 和 IE10 中有效,但在 Firefox (v 50.1.0).
中无效如果我在没有指令的情况下添加内联 SVG,它在 Firefox 中工作正常。请帮助我使指令在 Firefox 中也能正常工作。
查看此 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: "=?"
}
};
});