Data una struttura HTML simile a questo:Access (corpo) nella funzione direttiva collegamento
<body>
<div id="one" my-directive></div>
<div>
<div id="two" my-directive></div>
</div>
</body>
Quando provo ad accedere all'elemento genitore del two
Funziona e il registro restituisce il div genitore, ma quando il genitore è il corpo, come nel caso one
, non funziona e restituisce un set vuoto.
app.directive 'myDirective', ->
(scope,iElement,iAttrs) ->
console.log iElement.parent()
EDIT: mia ipotesi per questo problema è che il corpo di mia applicazione è resa sul lato client ed è unito al elemento del corpo sul metodo run del modulo. L'html viene inserito con $('body').html($compile(body.render())($rootScope));
e suppongo che la direttiva venga chiamata all'interno della funzione $ compile prima che i contenuti vengano inseriti nel corpo. Posso aggirare questo problema?
sembra funzionare come previsto: http://jsfiddle.net/mTNvq/ – Langdon
Questo è strano , ora ho alcuni indizi su quale potrebbe essere il problema. – olanod
Prova a utilizzare [$ evalAsync] (http://docs.angularjs.org/api/ng.$rootScope.Scope#$evalAsync) (viene eseguito dopo il ciclo di digest angolare, quindi dopo le manipolazioni del DOM angolare, ma prima del rendering del browser) o [ $ timeout] (http://docs.angularjs.org/api/ng.$timeout) (eseguito dopo il rendering del browser) nella funzione di collegamento. –