我通过CDN提供一个Web小部件,我正在使用角度材料 . 我想为svg图标设置“md-svg-src”属性以使用我的CDN中的基本目录 .
我试图使用自定义指令,但角度材料不会编译svg图标(虽然它确实设置了“md-svg-src”属性) .
我也希望尽可能高效地完成它,如果没有必要,不要进行角度重新编译 .
到目前为止这是我的代码:
<!-- md-icon with a relative url -->
<md-icon my-svg-src="addShoppingCart"
aria-label="Insert Drive Icon">
</md-icon>
指令定义:
app.directive("mySvgSrc", function ($compile) {
return {
compile: function (tElement, attrs) {
var baseUrl = "http://localhost/mySrc/New Folder/";
attrs.$set("md-svg-src", baseUrl + attrs.mySvgSrc + ".svg");
}
}
})
注意:由于cors问题,您不能将角度材料svg url与其cdn一起使用 . 您可以从以下位置下载示例:https://material.angularjs.org/latest/img/icons/cake.svg
谢谢您的帮助 .
这是完整的代码(你只需要在本地保存一个svg文件,请参阅我的注释);
<!DOCTYPE html>
<html ng-app="main">
<head>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/angular_material/0.10.0/angular-material.min.css">
</head>
<body>
<!-- md-icon with a relative url -->
<md-icon my-svg-src="addShoppingCart"
aria-label="Insert Drive Icon">
</md-icon>
<!-- Angular Material Dependencies -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-animate.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-aria.min.js"></script>
<!-- Angular Material Javascript now available via Google CDN; version 0.10 used here -->
<script src="https://ajax.googleapis.com/ajax/libs/angular_material/0.10.0/angular-material.min.js"></script>
<script>
var app = angular.module("main", ["ngMaterial"]);
app.directive("mySvgSrc", function ($compile) {
return {
compile: function (tElement, attrs) {
var baseUrl = "http://localhost/mySrc/New Folder/";
attrs.$set("md-svg-src", baseUrl + attrs.mySvgSrc + ".svg");
}
}
})
</script>
</body>
</html>