ich eine select2 Richtlinie mit einer benutzerdefinierten Abfrage für eine Mehrfachauswahl von Ländern habe die Daten zu greifen:Einstellung Anfangswert von Angular-UI Select2 mehr Richtlinie
// 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'} ...
]
Ich versuche, die ursprünglich ausgewählten Werte zu setzen in meinem Controller:
$scope.filters.countries = [{id: 'US', text: 'United States'}];
Dieses korrekt das Modell eingestellt wird, aber dies geschieht, bevor die select2 Initialisierung aufgetreten ist. Während ich den verbleibenden Initialisierungscode durchschreite, zeigt der Eingang vorübergehend [Object]
an, bevor er schließlich $scope.filters.countries
und die Eingabe ausblendet, aber es zeigt den Platzhaltertext nicht in der Eingabe an.
Um dies zu umgehen Ich verwende die folgenden die Modelle Anfangswert zurückgesetzt:
$scope.$on('$viewContentLoaded', function() {
setTimeout(function() {
$scope.filters.countries = [{id: 'US', text: 'United States'}];
}, 100);
});
Es ist wirklich hackish scheint ein setTimeout
zu werden. Gibt es einen besseren Weg, den ich vermisse?
Update 1
Wie hier von ProLoser angefordert ist eine Demo und Github Ticket.
Demo: http://plnkr.co/edit/DgpGyegQxVm7zH1dZIJZ?p=preview
GitHub Ausgabe: https://github.com/angular-ui/angular-ui/issues/455
ProLoser Rat Nach ich mit select2 der initSelection Funktion gestartet:
initSelection : function (element, callback) {
callback($(element).data('$ngModelController').$modelValue);
},
Es funktioniert der Trick aber fühlt sich immer noch wie dieses Problem zu umgehen.
Können Sie eine Demo für diese erstellen und vielleicht ein Ticket öffnen? Wenn Sie 'initSelection' in select2 verwendet haben (wofür genau das gedacht ist), könnten Sie' $ scope.filters.countries = 'US'' machen, aber der gesamte Init-Code muss etwas gründlicher getestet werden sicher, dass das, was du getan hast, auch unterstützt wird. Es könnte ein Problem sein, wenn ich keine passende Referenz zum ausgewählten Objekt finde – ProLoser
Ich habe meine Frage oben bearbeitet. Danke für Ihre Hilfe! – SethBoyd
PLNKR funktioniert nicht einmal. Ich hasse das – iamwhitebox