Каждый раз передавать разные массивы в ng-repeat - PullRequest
0 голосов
/ 20 ноября 2018

Я генерирую комбинированные списки динамически, и мне нужно каждый раз передавать новую коллекцию в ng-repeat. Как я могу это сделать?

<div ng-repeat="choice in $ctrl.inputFilterRows">
    <md-select ng-model="choice.name">
        <md-option ng-repeat="filter in $ctrl.filters" value="{{filter.value}}" >
        {{filter.value}}
       </md-option>
    </md-select>
</div>

Пытался установить с контроллера, но не сработало:

self.inputFilterRows[0].filters = [{ value: 'June' }, { value: 'July' }, { value: 'August' }];

1 Ответ

0 голосов
/ 20 ноября 2018

Идея состоит в том, чтобы использовать ng-if на нескольких md-select элементах и ​​решать, какой из них включить, основываясь на подходящем для вас условии.

Другой вариант - иметь переменную $scope, которая связанадля одного ng-repeat выбора, но вы продолжаете присваивать новые значения этой коллекции переменных $ scope, когда захотите.Это вызвало бы перерисовку области, и ng-repeat теперь будет использовать новые значения коллекции.

Второй, вероятно, чище.

РЕДАКТИРОВАТЬ:

На основе лучшего объясненияВ приведенных ниже комментариях я теперь понимаю, что вам нужен набор выборок, каждый из которых имеет свой собственный набор параметров.

Для достижения чего-то подобного я бы предложил иметь массив массивов, в котором каждый объект будет представлятьa select, а затем его содержимое будет опциями для этого выбора.

$scope.selectArray = [
  { name: 'colours', filters: [{ value: 'black' }, { value: 'red' }, { value: 'blue' }] },
  { name: 'months', filters: [{ value: 'January' }, { value: 'February' }, { value: 'March' }] }
];

Теперь вы можете иметь ng-repeat, перебирающий selectArray (select в selectArrays) для создания выборок, а затемкаждый из них будет содержать еще один ng-repeat для итерации по select.filters (фильтр в select.filters)

Я не собираюсь писать точный код, потому что вы выглядите так, будто знаете, что делаете, и яЯ уверен, что вы можете легко собрать его вместе.

Если вы хотите изменить набор данных определенного выбора, вы можете сделать что-то вроде:

$scope.selectArray[1].filters[0].value = 'December';

или

$scope.selectArray[1].filters = [{ value: 'June' }, { value: 'July' }, { value: 'August' }];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...