2014-11-04 43 views
1

我已經創建了一個指令,用於顯示作爲bootstrap-like documentation page的一部分使用的另一個指令的示例。這裏有一個例子:在執行任何子指令前克隆變換內容

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

我希望它複製被放置在其內部的標記並將它放入一個<code>標籤,以顯示你需要使用該指令的標記。

ng-model添加類的輸入,使得它:

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

相反,example指令應該捕獲:

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

不過,我似乎無法之前任何的訪問transcluded內容內部指令運行。這裏是a plunker demonstrating the issue

controller,preLinkpostLink函數中,輸入已經具有ng-model的css類。

在angular編譯子指令之前,有沒有辦法訪問example指令的內容?

回答

0

這是不可能的,因爲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

+0

我不不認爲這是一個優先級問題,因爲這是針對[在同一元素上的多個指令](https://docs.angularjs.org/api/ng/service/$compile#-priority-),在我的情況下, 'ng-transclude'是'ng-model'的父親 – thetallweeks 2014-11-04 21:29:44