AngularJs ng-options повторяются в repeat - PullRequest
1 голос
/ 06 марта 2019

есть код:

<tr data-ng-repeat="item in data.items">
     <td>{{item.Id}}</td>
     <td>
         <div>
             {{ data.items[$index].selectedBusinessType.id }}
             {{ data.items[$index].businessTypes[$index].id }}
             <select ng-options="businessType.name for businessType 
                     in item.businessTypes track by businessType.id"
                     data-ng-model="item.businessTypes.id == item.selectedBusinessType.id">
             </select>
         </div>
     </td>
 </tr>

В моделях div результат в порядке, но раскрывающийся список все еще не работает

DropDown без экрана значения

image

Область данных со спины

image

Могу ли я получить какое-то решение, что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

На angularJs версии 1.5 вариант работы такой: Plunk - Используйте angularJs 1,5x

  <select class="form-control" ng-model="data.items[$index].selectedBusinessType.id" 
          ng-disabled="item.CanChangeBusinessType" 
          ng-change="changeBusinessType(item, selectedBusinessType.id)">
          <option ng-repeat="businessType in item.businessTypes" ng-value="businessType.id">
            {{businessType.id}}
          </option>
        </select>

Но это не работает в версии 1.4+. Plunk - Используйте angularJs 1,4x

   <div>
        <select class="form-control" ng-model="data.items[$index].selectedBusinessType.id" 
        ng-disabled="item.CanChangeBusinessType" 
        ng-change="changeBusinessType(item, selectedBusinessType.id)">
          <option ng-repeat="businessType in item.businessTypes" ng-value="businessType.id">
            {{businessType.id}}
          </option>
        </select>
      </div>

Второй сработавший вариант - используйте ng-option: Ng-Option с использованием

  <select class="form-control" ng-model="item.selectedBusinessType" 
        ng-options="option.id as option.name for option in data.businessTypes"
        ng-disabled="item.CanChangeBusinessType" 
        ng-change="changeBusinessType(item, item.selectedBusinessType, '{{item.selectedBusinessType}}')">
        <option value="">-- Не указан --</option>
      </select>
0 голосов
/ 06 марта 2019

Возможно, вам понадобится фильтр.Попробуйте что-то вроде: (plunker: https://next.plnkr.co/edit/DiInzWMC2k8WZzuH)

<select class="form-control" ng-model="$scope.data.items[0].selectedBusinessType.id" ng-options="businessType.name for businessType in item.businessTypes | filter:doFilter(item.selectedBusinessType)">
            </select>

А в контроллере:

  $scope.doFilter  = function(id) {
    console.log("selectedId:" + Object.values(id))
    return function(value, index, array) {
      console.log(value.id)
      if(value.id == Object.values(id))
        return true;
    }
  };

Отнеситесь к ответу в https://stackoverflow.com/a/39635805/4952634

...