【发布时间】:2016-09-08 01:50:52
【问题描述】:
我有一个嵌套在指令中的指令。为了满足我们设计师的需求,我要求内容是 DOM 节点的直接子节点。
<div>
<my-directive style="color: blue;">
<p>Name: {{ ctl_a.fname }} {{ ctl_a.sname }}</p>
<p>External Test: {{ xternal }}</p>
<div>
<nested-directive incoming="ctl_a.a_counter"></nested-directive>
</div>
</my-directive>
</div>
让它正确加载的最佳选择是什么? IE“my-directive”可以访问ctl_a.fname,“nested-directive”可以访问$scope.incoming,作为“ctl_a.a_counter”传入的参数。
Here is a plunk 演示了我在使用 $compile 时遇到的问题。如果我使用 $compile,嵌套指令会执行两次。一次用于外部指令编译方法,再次用于手动编译方法。更糟糕的是,手册是唯一能正确呈现内容的。
如果我使用ng-transclude,那么传递给内部指令的所有属性都没有前缀 $$prevSibling 或 $parent,因为 ng-transclude 似乎创建了一个新范围。必须这样引用它似乎是根本错误的。
编辑:这是another plunk,它分叉了第一个。这次我将演示 ng-transclude 以及我需要如何使用 $parent 来访问控制器的指令。
谢谢。
【问题讨论】:
-
那么,如果你最终自己编译,为什么还要让 Angular 编译内容呢?我也不确定你的实际问题是什么。
-
让这个正确加载的最佳选择是什么? 如,我如何对这个标记进行角度处理,以便在模板变量包含的上下文中进行评估指令。因为 Angular 不会像现在这样编译这些。
标签: javascript angularjs angularjs-directive compilation