2017-04-19 3 views
0

Plunker to try Ich verwende oi-select library, um mehrere Optionen auszuwählen, ich möchte den ersten Wert aus Daten sollte standardmäßig ausgewählt werden, sobald die Daten verfügbar sind. HTML-CodeWie die erste Option in oi-select angularjs beibehalten wird

<oi-select multiple ng-init="selectedNewRelease=releaseList[0]" 
oi-options="item.releaseId for item in releaseList" ng-model="selectedNewRelease" 
placeholder="Select Releases" 
oi-select-options="{dropdownFilter: 'myDropdownFilter'}" id="selectedReleases" 
ng-change="onReleaseChange();toggleCol();"></oi-select> 

Ich habe versucht, mit ng-init, um wie unten zuweisen:

$scope.selectedNewRelease=$scope.releaseList[0]; 

Dies tatsächlich funktioniert, aber sobald ich wähle eine oder mehrere Option entfernt es standardmäßig ausgewählte Option. Irgendeine Idee irgendein Link bitte. Link für oi-select

Antwort

2

Wenn Sie den Standardwert für oi-select (mehrfach) mit einem Objekt nicht Array festlegen, führt das Auswählen eines neuen Elements zum Überschreiben des ursprünglichen Wertes. So sollten Sie es mit einem Array .Something wie folgt init:

ng-init="selectedNewRelease=[releaseList[0]] 

beziehen sich diese plunker.


UPDATE:

oi-select verwendet ngModeltwo-way-databinding zu erreichen, und da Winkel nicht ändern wird ausgelöst, wenn der instance des Arrays nicht geändert wird (ng bedeutet Änderungs nicht ohne Instanz ausgelöst wird geändert).

So nach Neuzugängen schieben, sollten Sie etwas tun:

$scope.selectedNewRelease = $scope.selectedNewRelease.slice(); // create new instance for the array. 
+0

ja ich habe versucht, den ersten Datensatz nach $ scope.selectedNewReleases.push (releaseList [0]) zu drücken, aber es wird nicht angezeigt, wenn ich den zweiten Wert wähle, wird zuerst und dann der zweite angezeigt. – Sudarshan

+0

@Sudarshan wann hast du den ersten Gegenstand geschoben? Wenn Sie in Async-Callbacks sind, sollten Sie vielleicht $ $ scope. $ apply' aufrufen. – Pengyy

+0

http://plnkr.co/edit/mwNkSCBCrz3zXXbdJK8o?p=preview das ist meine Echtzeit-Geige. Ich versuchte scope.apply auch hier zu überprüfen – Sudarshan

0

versuchen, diese

ng-init="selectedNewRelease=releaseList[0]" statt ng-init="releaseList[0]"

Edit:

Oder ng-init="selectedNewRelease=releaseList[0]" auf oi-select entfernen und den Wert im Controller nach Last zuweisen wie die releaseList Daten

function controller($scope) 
{ 
Loaddropdown() 
{ 
$http().success(function(data){ 
$scope.releaseList = data; 
$scope.selectedNewRelease =$scope.releaseList[0]//or $scope.selectedNewRelease=$scope.releaseList[0].Id// which id means what's your value 
}) 
} 
} 
+0

Ja, ich habe versucht, das leider durch Fehler, den ich richtige Art und Weise zu bearbeiten vergessen, aber kein Glück, wie oi-select wird nicht Unterstützung ng scheint -init nur – Sudarshan

+0

Ich habe update meine Antwort –

+0

Ich versuchte dies auch, ich habe in meiner Frage erwähnt, bitte, es funktioniert, aber wenn ich eine andere Option auswähle, dann ausgewählten Wert geht weg. Bitte lesen Sie meine Frage, auch kann ich nicht von meinem Controller zuweisen, weil ich selectedNewReleases zu iterieren brauche, um zu sehen, wie viele Optionen ausgewählt sind. Wenn ich es zuweisen, ist seine Länge immer 0 bei jedem Anruf. – Sudarshan

Verwandte Themen