我需要在指令中使用相同的指令,这取决于条件参数。然而,当我尝试这样做的时候,它似乎走进了一个无尽的循环。据我所知,它试图预加载模板,这会导致无休止的递归,最后,它只抛出以下错误:“RangeError:超过最大调用堆栈大小”。
我已经在小提琴中创建了一个示例。https://jsfiddle.net/qh9nh1gx/
“custom-directive”的模板:
<div>
<div ng-if='info==1'><div custom-directive info='2'></div></div>
<div ng-if='info==2'>DONE,single.</div>
</div>谢谢
发布于 2015-05-03 18:23:15
我发现了两个方法来解决这个问题,第一个就是Jju所描述的--创建一个新的“编译器”方法(可以从他发送的url中抓取)。第二种选择--总是为指令的“递归”部分使用一个额外的模板。例如,在我的指令中,我有一个"ng-repeat“部分,根据项目的值,它可以请求再次显示该指令。虽然我使用了"ng-include“来实现另一个指令,但它还是有效的。
<div ng-repeat="item in items" ng-include="'inline-possibly-recursive-template"'></div>
在该模板中,您可以再次调用该指令,而不会出现任何问题。
我希望这将是任何其他人将陷入这个问题。
发布于 2015-05-03 16:10:00
您可以查看https://stackoverflow.com/a/19065910/1680674,它描述了一种创建内部使用指令的常用方法
https://stackoverflow.com/questions/30011216
复制相似问题