ho una direttiva select2 per un multiplo selezionato di paesi con una query personalizzata per afferrare i dati:Impostazione dei valori iniziali della direttiva Angular-UI Select2 multipla
// Directive
<input ng-model="filters.countries" ui-select2="filters.countryOptions"
data-placeholder="Choose a country...">
// filters.countryOptions
{
multiple: true,
query: function() {
get_list_of_countries();
}
}
// Formatted data from remote source
[
{id: 'US', text: 'United States'},
{id: 'CA', text: 'Canada'} ...
]
sto cercando di impostare i valori inizialmente selezionati nel mio controller utilizzando:
$scope.filters.countries = [{id: 'US', text: 'United States'}];
Ciò impostato correttamente il modello, tuttavia questo sta accadendo prima che si è verificato l'inizializzazione select2. Mentre passo attraverso il codice di inizializzazione rimanente, l'input visualizza temporaneamente [Object]
prima di eliminare definitivamente $scope.filters.countries
e l'input, ma non visualizza il testo segnaposto nell'input.
Per ovviare a questo sto usando il seguente per ripristinare il valore iniziale dei modelli:
$scope.$on('$viewContentLoaded', function() {
setTimeout(function() {
$scope.filters.countries = [{id: 'US', text: 'United States'}];
}, 100);
});
Sembra davvero di essere hacker utilizzando un setTimeout
. C'è un modo migliore che mi manca?
Update 1
Come richiesto dal ProLoser ecco un demo e biglietto GitHub.
Demo: http://plnkr.co/edit/DgpGyegQxVm7zH1dZIJZ?p=preview
GitHub Problema: https://github.com/angular-ui/angular-ui/issues/455
Seguendo il consiglio di ProLoser ho iniziato ad usare la funzione di initSelection select2:
initSelection : function (element, callback) {
callback($(element).data('$ngModelController').$modelValue);
},
Si fa il trucco, ma ancora si sente come una soluzione.
Potete creare una demo per questo e forse aprire un ticket? Se hai usato 'initSelection' in select2 (che è specificamente per che cosa è progettato per) potresti fare' $ scope.filters.countries = 'US'' ma l'intero codice di init ha bisogno di alcuni test più approfonditi quindi dovremmo essere certo che anche quello che hai fatto è supportato. Potrebbe essere un problema non trovare un riferimento corrispondente all'oggetto selezionato – ProLoser
Ho modificato la mia domanda sopra. Grazie per l'aiuto! – SethBoyd
plnkr non funziona nemmeno. odio quello – iamwhitebox