2016-12-23 5 views
0

У меня есть выпадающий список с четырьмя вариантами. Я выбираю первый вариант как «Джон (1)» и добавляю строку. Теперь следующий выпадающий список должен показывать только три варианта в выпадающем меню, т. Е. Он должен исключать значение предыдущего выпадающего выбранного значения, которое является «John (1)». В следующей строке добавления он должен исключать два предыдущих значения выпадающего списка. Это может быть достигнуто. Заранее спасибо. Ниже - скрипка.Отфильтровать следующие выпадающие значения на основе уже выбранного значения

<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/

ответ

0

Добавить фильтр в нг-повтор, чтобы избежать Allready добавленных объектов:

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

Вашего HTML будет выглядеть следующим образом:

<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> 

Примечания : Рассмотрим замену директивы ng-repeat для ng-опций для элемента селектора.

+0

Проблема, которую я вижу, заключается в том, что она изменяет все выпадающие списки из-за двусторонней привязки данных. Я хочу сделать каждый раскрывающийся список с уникальным набором значений параметров. Например, в первом раскрывающемся списке должны быть опции «1», «2», «3», «4». Затем, если выбрано «1», то при добавлении строки второе выпадающее меню должно дать мне «2», «3», «4», поскольку параметры сохраняют первые варианты выпадающего списка «1», «2», «3», «4», все еще нетронутыми. – Maverick2007

+0

вы можете использовать angular.copy() для копирования объектов и потерять ссылку на двустороннюю привязку данных. –

+0

попытался использовать angular.copy(), не получив желаемого результата, как указано выше. – Maverick2007

Смежные вопросы