Sto cercando di implementare il plug-in multiselect jQuery utilizzando una direttiva all'interno della mia app. Qui' l'elemento di selezione:Come posso determinare quando ng-options ha terminato l'aggiornamento del DOM?
<select multiple
ng-model="data.partyIds"
ng-options="party.id as party.name for party in parties"
xs-multiselect="parties">
</select>
Il modello parties
modello viene caricato tramite $ http. Il plug-in multiselect analizza gli elementi option
all'interno di select
e genera la bella selezione multipla.
C'è un modo per rilevare quando l'elemento select
è popolato con opzioni, quindi posso dire al plug-in multiselect di aggiornare i suoi dati?
Ecco la mia direttiva:
machineXs.directive("xsMultiselect", function() {
return {
restrict: "A",
require: '?ngModel',
link: function(scope, element, attrs, ngModel) {
element.multiselect().multiselectfilter();
scope.$watch(scope[attrs["xsMultiselect"]], function() {
// I tried watching but it doesn't help
element.multiselect('refresh');
element.multiselectfilter("updateCache");
});
}
}
});
Dentro il tuo $ orologio, provare a chiamare timeout $ - vale a dire, mettere la roba selezione multipla all'interno di una funzione di callback di timeout. Ciò potrebbe dare alla direttiva ng-options la possibilità di eseguire e aggiungere le opzioni al DOM. –
Non funziona. Ho impostato correttamente l'orologio $? – lucassp
Mi sembra a posto. Non ero sicuro se il mio suggerimento avrebbe funzionato. Angular non ha davvero alcun modo di segnalare quando il rendering è completo. A volte $ timeout funziona, ma non sempre. –