javascript - 如何在运行时添加 SVG 元素 - Angular

标签 javascript angularjs svg

我将通过单击按钮添加一个 SVG 元素:

myApp.directive('addRectangle', function() {
    return function(scope, element, attr) {
        element.bind('click',function() {
            scope.rectCount++;
            angular.element(document.getElementsByClassName('svgMain')).append('<circle r=5 cx=200 cy=200 fill=red data-scope='+scope.rectCount +' />');


        });
    }
});

该元素将如我所料正确添加,但问题是它没有显示在相关位置!我已经检查了页面的源 html,对此我完全确定。 这是这个问题的 fiddle :jsfiddle

此外,我正在使用 angular 版本 1.4.x

最佳答案

正如@RobertLongson 在问题的评论中所说,每次您想要添加新的 SVG 元素时,您都应该提及 SVG 命名空间,就像这个示例:

function makeSVG(tag, attrs) {
            var el= document.createElementNS('http://www.w3.org/2000/svg', tag);
            for (var k in attrs)
                el.setAttribute(k, attrs[k]);
            return el;
        }

您可以使用此功能来添加新的 SVG 元素。我还更新了 fiddle .

关于javascript - 如何在运行时添加 SVG 元素 - Angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32054259/

相关文章:

javascript - 在 JavaScript 中打印时缩放页面

javascript - 根据当前日期排序数组

css - SVG 滤镜仅将滤镜应用于不透明区域

javascript - 返回声明后的声明

javascript - 共享接口(interface)公共(public)功能的有效方法

javascript - 选择模板中的 DOM 元素

javascript - 使用 jQuery、Ajax 或 AngularJS 从 Azure/oauth2/token 端点获取 access_token 时出现跨域问题

javascript - 如何在 JavaScript 中传递鼠标单击事件?

javascript - 如何更新 C3.js 图形线宽和刻度颜色?

javascript - 数据表 - Jquery 在分页数据表中不起作用