Ci sono alcune cose che puoi fare per ottenere l'elemento di una direttiva.
Element on dell'evento
Se è necessario passare l'elemento su un evento, è possibile creare un callback che può passare l'elemento posteriore. Se non hai bisogno di un riferimento per tutto il tempo, questo è il metodo preferito.
In ritorni oggetto nella direttiva, aggiungere qualcosa di simile
scope:{
elementclicked: "&"
}
Nel modello del vostro direttiva, è possibile aggiungere
<....... ng-click="ElementClicked(event)"........>
Nella direttiva Controller, ora è possibile gestire il clic e passa i risultati
$scope.ElementClicked = function ($event) {
if ($scope.elementclicked != undefined) {
elementclicked({ event: $event });
}
}
Ora si passa il callback come qualsiasi altro alla DIRETTIVA.
<yourDirective elementclicked="MyFunction(event)" ....>
elemento quando collegato
Se avete bisogno di un riferimento al momento della creazione, si può fare anche questo. Se passi in una struttura dati come le impostazioni, puoi impostarlo nell'evento di collegamento.Quando fai il tuo link nella direttiva, imposta semplicemente l'elemento.
scope:{
settings:"="
},
link:function(scope,element){
scope.$watch('settings',function(){
if(scope.settings!=undefined){
scope.settings.element=element;
}
}
}
Questo controllerà quando le impostazioni sono vincolate e imposta la proprietà dell'elemento. Il grande svantaggio è che si aggiunge una proprietà a un oggetto passato, ma se si tratta di una direttiva all'interno di una direttiva o è solo il tuo progetto, dovrebbe andare bene.
Un altro modo per farlo sarebbe utilizzare il primo metodo e creare un callback con elementi (elementi) e attivarlo dopo aver collegato l'ambito.
Non hai bisogno di alcun ambito se conosci l'id dell'elemento –
Ma come mai? – estus
fammi riformulare la domanda, stai usando Batarang? –