Javascript 将新指令附加到现有指令

Javascript 将新指令附加到现有指令,javascript,angularjs,svg,angularjs-directive,Javascript,Angularjs,Svg,Angularjs Directive,这是我用来创建新的SVG元素的函数: makeSvg = function (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; } 而且用法非常简单: var result = makeSvg("my-directi

这是我用来创建新的
SVG
元素的函数:

makeSvg = function (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;
}
而且用法非常简单:

var result = makeSvg("my-directive", { "data-attr": "val" });
$compile(result)($scope);
此代码工作正常,但问题是我想在生成的指令中添加另一个指令。
compile
之前的
result
值为:

<my-directive data-attr="val"></my-directive>

这是一个SVG元素,所以我不能像处理字符串一样处理它。我想创建如下内容:

<my-directive data-attr="val" another-directive></my-directive>


之后,我将调用
compile
以生成所需的结果,但我不知道如何创建该指令。

只要在调用
makeSvg
时将其与空字符串一起添加到attrs对象中即可

请看一下下面的演示或本演示

angular.module('demoApp',[])
.directive('myDir',myDirective)
.指令(“另一个指令”,另一个指令)
.控制器(“主控制器”,主控制器);
函数MainController(){
}
函数另一个指令(){
返回{
链接:功能(范围、元素){
log(“添加了另一个指令”);
}
}
}
函数myDirective($compile){
返回{
限制:'E',
替换:正确,
链接:功能(范围、元素){
var result=makeSvg(“我的指令”,“数据属性”:“val”,“另一个指令”:“});
var compiled=$compile(结果)(范围);
元素。替换为(已编译);
}
};
函数makeSvg(标记、属性){
var el=document.createElements(“http://www.w3.org/2000/svg“,标签);
for(属性中的变量k)
el.setAttribute(k,attrs[k]);
返回el;
}
}


真的不清楚你在问什么。问题出在
create指令的哪个部分?@charlietfl我已经提到了我想做的事情!在“我的指令”中添加“另一个指令”是我的问题。真的很清楚,不是吗?!不幸的是,这并不清楚,这就是为什么没有人回应。你试过哪些不起作用的可能是一个更好的观察方式it@charlietfl谢谢你的建议,但我已经尽力澄清了。谢谢你的回答,我不知道为什么我不能解决它!