mam dyrektywę select2 dla wielokrotnością wybierz krajów z kwerendy niestandardowej chwycić dane:Ustawienie początkowe wartości dyrektywy Kątowymi-UI Wybór2 wielokrotny
// 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'} ...
]
Próbuję ustawić wstępnie wybranych wartości w moim kontrolerze przy użyciu:
$scope.filters.countries = [{id: 'US', text: 'United States'}];
To poprawnie ustawia model, jednak dzieje się to przed wystąpieniem inicjalizacji select2. Gdy przechodzę przez pozostały kod inicjujący, dane wejściowe tymczasowo wyświetlają [Object]
przed ostatecznym wygaśnięciem $scope.filters.countries
i wejściem, ale nie wyświetlają tekstu zastępczego na wejściu.
Aby obejść ten problem Używam następujących czynności, aby zresetować wartość początkową modelach:
$scope.$on('$viewContentLoaded', function() {
setTimeout(function() {
$scope.filters.countries = [{id: 'US', text: 'United States'}];
}, 100);
});
Wydaje się naprawdę hackish się używając setTimeout
. Czy istnieje lepszy sposób, którego mi brakuje?
Update 1
Zgodnie z wnioskiem ProLoser o to demo i bilet GitHub.
Demo: http://plnkr.co/edit/DgpGyegQxVm7zH1dZIJZ?p=preview
GitHub Problem: https://github.com/angular-ui/angular-ui/issues/455
Za radą ProLoser za zacząłem używać funkcji select2 za initSelection:
initSelection : function (element, callback) {
callback($(element).data('$ngModelController').$modelValue);
},
To załatwia sprawę, ale nadal czuje się jak obejść.
można stworzyć demo do tego i może otworzyć bilet? Jeśli użyłeś 'initSelection' w select2 (co jest dokładnie przeznaczone dla tego), możesz po prostu zrobić' $ scope.filters.countries = 'US'', ale cały kod init potrzebuje więcej dokładniejszych testów, więc powinniśmy być na pewno to, co zrobiłeś, jest również wspierane. Może to być problem z nieodnalezieniem pasującego odwołania do wybranego obiektu. – ProLoser
Edytowałem moje pytanie powyżej. Dzięki za pomoc! – SethBoyd
plnkr nawet nie działa. Nienawidzę tego – iamwhitebox