2016-12-23 1 views
0

Ich habe ein Dropdown mit vier Optionen. Ich wähle die erste Option als 'John (1)' und füge eine Zeile hinzu. Nun sollte das nächste Dropdown-Menü nur drei Optionen im Dropdown-Menü anzeigen, dh es sollte den Wert des vorherigen Dropdown-Wertes "John (1)" ausschließen. In der nächsten Zeile zum Hinzufügen sollten die vorherigen zwei ausgewählten Dropdown-Werte ausgeschlossen werden. Kann dies erreicht werden? Vielen Dank im Voraus. Unten ist die Geige.Nächste Dropdown-Werte basierend auf dem bereits ausgewählten Wert filtern

<div ng-app ng-controller="LoginController"> 
    <table class="table table-striped"> 
    <thead> 
     <tr> 
      <th>Description</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr ng-repeat="mapping in viewTemplateRow"> 
      <td> 
       <select class="form-dropdown" id="templateId" ng-model="mapping.id"> 
        <option value="">Please Select...</option> 
        <option ng-repeat="option in viewTemplateData" value="{{option.id}}" ng-selected="{{option.id == mapping.id}}" ng-model="viewTemplateData">{{option.name}} ({{option.id}})</option> 
       </select> 
      </td> 
     </tr> 
    </tbody> 
</table> 
<button type="button" class="button button-compact" ng-click="addRow();">Add New Row</button> 
</div> 

https://jsfiddle.net/Lt7aP/3787/

Antwort

0

einen Filter auf Ihre ng-repeat, um hinzufügen allready hinzugefügt Objekte zu vermeiden:

$scope.notSelected = function(item){ 
     for (var i in $scope.viewTemplateRow){ 
      if ($scope.viewTemplateRow[i].id==item.id) 
      return false 
     } 
     return true; 
    } 

Ihre html wie folgt aussehen:

<option ng-repeat="option in viewTemplateData | filter: notSelected" value="{{option.id}}" ng-selected="{{option.id == mapping.id}}" ng-model="viewTemplateData">{{option.name}} ({{option.id}})</option> 

Hinweis Hinweis: Ersetzen Sie die ng-repeat-Anweisung für ng-Optionen für ein Selektorelement.

+0

Das Problem, das ich sehe, ist, dass es alle Dropdowns wegen der Zwei-Wege-Datenbindung ändert. Ich möchte jedes Dropdown-Menü mit einem eindeutigen Satz von Optionswerten versehen. Zum Beispiel sollte das erste Dropdown-Menü Optionen wie '1', '2', '3', '4' haben. Dann, wenn '1' ausgewählt ist, dann auf Add Zeile zweite Dropdown sollte mir '2', '3', '4' als Optionen geben die ersten Dropdown-Optionen immer noch '1', '2', '3', '4' noch intakt. – Maverick2007

+0

könnten Sie angular.copy() verwenden, um Objekte zu kopieren und diese Referenz der bidirektionalen Datenbindung zu verlieren. –

+0

versucht mit angular.copy(), nicht die gewünschte Ausgabe wie oben erwähnt. – Maverick2007

Verwandte Themen