使用 angularjs 将 svg 中的 xlink:href 设置为 base64 编码的图像

Posted

技术标签:

【中文标题】使用 angularjs 将 svg 中的 xlink:href 设置为 base64 编码的图像【英文标题】:Set xlink:href in svg with angularjs to base64-encoded image 【发布时间】:2015-12-05 13:06:37 【问题描述】:

我正在制作类似项目特定的 svg 在线编辑器,并希望添加从计算机加载文件的功能,该文件将以 base64 编码并设置为 svg fill 背景。

问题:当我通过 angularjs 将正确的 base64 设置为图像 xlink:href 时,我没有将其视为背景(在 Safari 8.0.8 中测试)。如果我将图像 href 设置为内联 base64 或远程 url,一切正常。

Demonstration

【问题讨论】:

【参考方案1】:

这里的第一件事是ng-attrs-xlink:href不会绑定到xlink:href,它将被规范化为xlink-href

幸运的是,Angular 已经为 does that 提供了 ng-href 指令。

第二个原因是 Angular 在许多特定于 DOM 的东西上很烂,包括 SVG-related one。 xlink:href 将由 ng-href 添加,但它不起作用。解决方法是在元素上设置空的 xlink:href 属性,这样 Angular 就不必创建它。

这里是a fiddle。

【讨论】:

解决方案有效。干杯:

以上是关于使用 angularjs 将 svg 中的 xlink:href 设置为 base64 编码的图像的主要内容,如果未能解决你的问题,请参考以下文章

angularjs ng重复svg跳过空值的索引

AngularJS ng-href 和 svg xlink

使用 CSS 或 AngularJS 的 SVG 路径元素悬停缩放

我们如何在 AngularJS 中不使用幻数验证 SVG 图像

如何将变量从 jQuery 传递到 AngularJs 函数

使用 AngularJs 和 D3.js 从 svg 元素调用自定义函数