Angularjs 在父指令中追加子指令

Angularjs 在父指令中追加子指令,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个父指令,希望在链接函数中动态添加子指令子指令^需要父指令。 我可以添加任何html元素,但只要我尝试$compilemychild指令,就会出现以下错误,即找不到所需的控制器。如果我手动添加子指令,它将非常有效 错误: Error: [$compile:ctreq] Controller 'myInput', required by directive 'myKey', can't be found! 添加元素后,我的模板应如下所示: <myInput> <myKe

我有一个父指令,希望在链接函数中动态添加子指令子指令^需要父指令。 我可以添加任何html元素,但只要我尝试$compilemychild指令,就会出现以下错误,即找不到所需的控制器。如果我手动添加子指令,它将非常有效

错误:

Error: [$compile:ctreq] Controller 'myInput', required by directive 'myKey', can't be found!
添加元素后,我的模板应如下所示:

<myInput>
 <myKey></myKey> <-- added dynamically
 <myKey></myKey> <-- added dynamically
 <myKey></myKey> <-- added dynamically
  ....
</myInput>


将compile-append操作的顺序更改为append-compile:

var keyEl = angular.element('<myKey code="'+ key +'" response="'+ value.response +'"></myKey>');
element.append(keyEl);
$compile(keyEl)(scope);
然后,编译部分也将更改:

angular.element('<my-key code="'+ key +'" response="'+ value.response +'"></my-key >');
angular.element(“”);

,它工作得非常完美,甚至有意义(尽管相关文档会有所帮助)。我在帖子中只是用了假名字,但你在蛇案上当然是对的。再次感谢。我不懂文档,但很容易理解。在DOM元素附加到DOM树之前,它没有父元素(其
parentNode
属性为
null
)。当Angular查找
^myInput
时,它会向上遍历DOM树,直到找到具有所需指令的节点。在我们的例子中,它会立即失败,因为元素没有单个父节点。
var keyEl = angular.element('<myKey code="'+ key +'" response="'+ value.response +'"></myKey>');
element.append(keyEl);
$compile(keyEl)(scope);
<my-input>
    <my-key></my-key>
</my-input>
angular.element('<my-key code="'+ key +'" response="'+ value.response +'"></my-key >');