【问题标题】:Clone transcluding content before any child directives execute在执行任何子指令之前克隆包含内容
【发布时间】:2014-11-04 20:27:43
【问题描述】:

我创建了一个指令,用于显示另一个指令的示例,该指令用作bootstrap-like documentation page 的一部分。这是一个例子:

<an-example>
  <input ng-model="name" an-spellcheck />
</an-example>

我希望它复制放置在其中的标记并将其放入&lt;code&gt; 标记中,以显示使用该指令所需的标记。

但是ng-model 将类添加到输入中,使其成为:

<input class="ng-scope ng-pristine" ng-model="name" an-spellcheck />

相反,example 指令应该捕获:

<input ng-model="name" an-spellcheck />

但是,在任何内部指令运行之前,我似乎无法访问嵌入的内容。这里是a plunker demonstrating the issue

controllerpreLinkpostLink 函数中,输入已经包含来自ng-model 的css 类。

有没有办法在 Angular 编译子指令之前访问 example 指令的内容?

【问题讨论】:

    标签: angularjs angularjs-directive angularjs-ng-transclude


    【解决方案1】:

    这是不可能的,因为 ngTransclude 的优先级为 0,而 ngModel 的优先级为 1(编译顺序是从高到低)。 因此 ngModel 总是首先被编译。可以更改指令的优先级以使其在 ngModel 之前编译,但稍后会应用 transclude

    ngModel 优先级: https://docs.angularjs.org/api/ng/directive/ngModel

    ngTransclude 优先级: https://docs.angularjs.org/api/ng/directive/ngTransclude

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 2010-10-17
    • 1970-01-01
    相关资源
    最近更新 更多