Ho una direttiva personalizzata myDirective
che esegue un'attività su un elemento.La direttiva AngularJS all'interno di ng-if non verrà eseguita
ho questa direttiva in un blocco ng-if
<div ng-if="condition">
<div my-directive></div>
</div>
Qualcosa di simile violino: http://jsfiddle.net/hGnvv/ solo la condizione ng-if
si trasforma in vero dopo le mie $http
richieste vengono caricati.
La direttiva è probabilmente compilata durante il runtime, ma mai collegata, quindi il codice non viene mai eseguito. Se sostituisco ng-if
per ng-show
, la direttiva funziona correttamente.
Qualche soluzione?
Modifica: Non riesco a utilizzare ng-show
perché ho 130 direttive nel modulo. 20 direttive funzionano ugualmente, e l'altra corre secondo il mio tipo di oggetto.
ng-if="type == 1"
quindi caricare questi elementing-if="type == 2"
quindi caricare altri elementi ecc
Se cambio la ng-if
al ng-show
, il modulo assume 8s per caricare invece di 1s.
Hai già una soluzione.Sostituire ng-if con ng-show – nikhil
Non riesco a farlo, ho come 130 direttive su un singolo modulo. Se sostituisco la ng-if con ng-show, tutto questo codice che deve essere eseguito gira il modulo molto più lentamente (8s invece di ~ 1s). –
Utilizzare ng-show se possibile. Ng-if rimuove l'elemento dal DOM, quindi non c'è modo per angolare compilarlo. –