Angularjs:使用递归指令时如何访问transclude中的局部范围

Angularjs:使用递归指令时如何访问transclude中的局部范围,angularjs,recursion,angularjs-directive,angularjs-scope,angularjs-ng-transclude,Angularjs,Recursion,Angularjs Directive,Angularjs Scope,Angularjs Ng Transclude,背景: 我正在尝试从JSON模式设置树视图-我使用指令schema tree进行设置,正如我在代码中设置的那样。在视图中,我试图排除DOM元素,以便可以重用此树视图。但是,由于每个端点都有一个转置DOM的副本,因此我需要确定递归中哪个转置DOM副本已被访问 问题: 但是,我尝试访问此作用域时失败了。我想到的最好的方法是修改指令的compile函数中的作用域,但这只会将transclude作用域更改为指令第一次调用的值,而不是递归地更改为每次调用的值 代码: 请在此处找到Plunker: 在这个代

背景: 我正在尝试从JSON模式设置树视图-我使用指令
schema tree
进行设置,正如我在代码中设置的那样。在视图中,我试图排除DOM元素,以便可以重用此树视图。但是,由于每个端点都有一个转置DOM的副本,因此我需要确定递归中哪个转置DOM副本已被访问

问题: 但是,我尝试访问此作用域时失败了。我想到的最好的方法是修改指令的compile函数中的作用域,但这只会将transclude作用域更改为指令第一次调用的值,而不是递归地更改为每次调用的值

代码: 请在此处找到Plunker: 在这个代码中,
schema树
是一个递归树,我试图在其中通过单击按钮为每个递归提取
path
变量。我可以在每个指令中获得
路径
,但不能在关联的转置DOM中获得路径,在该DOM中我只能获得
.root

问题: 我做错了什么?如何访问转置DOM中直接父级的
路径

另一方面,我应该使用另一种方法来解决这个问题吗


提前谢谢

谢尔盖罗马诺夫:首先,对不起,我不清楚。请注意,在我的代码中,每个
schemaTree
标记都有一个
path
变量,在该变量中,我存储了到达该特定分支所采取的路线,为每个分支提供了一个唯一的标识符。我想在转置DOM中访问这个
路径
,这样我在转置DOM中包含的任何函数都能准确地知道哪个分支访问了该函数->如果我按下CORE标记下的按钮,
vc.hi
函数会在控制台中显示path.root.CORE.tags。现在它只会显示.root for all,这否定了目的。这是我的问题。为什么。好的,现在是,但行动是什么?实际上,您不需要知道路径。因为ngRepeat的每次迭代都会创建新的范围。因此,您可以完全安全地将函数放在只包含当前对象的范围内。在我看来,您正试图使用angular-the-PHP方式。您对
ngRepeat
的看法是正确的,但对于transclusion来说,情况并非如此(transclusion提供了使组件通用化的灵活性)。转换将保留
viewCtrl
的作用域,而不是
ngRepeat
(这是按角度设计的)-这就是为什么我可以调用转换后的DOM
vc.hi()
,而不用在
模式树
指令中使用隔离作用域。因此,转换范围不知道路径,必须单独提供此信息。我正在全神贯注地寻找另一种解决方案,但它必须提供一个树状视图,其中可以包含每个分支/叶的任意函数。但为什么需要在这里使用转换?即使根据你的解释,听起来你也必须做到这一点,而不致于陷入困境。