различные ng-модели в ng-repeat

89
7

Я столкнулся с проблемой в AngularJS! (Я очень новичок в AngularJS)

Я пытаюсь установить n select fields с options x options и я хочу иметь другую ng-model для select fields.

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

Я пробовал серверные разные вещи. И проблема заключалась в том, что я не мог обрабатывать разные модели в ng-repeat

Вот мой JSON файл, чтобы сделать вещи немного яснее:

[{
id: 1,
text: "Question1",
selected:false
}, {
id: 2,
text: "Question2",
selected:false
}, {
id: 3,
text: "Question3",
selected:false
}, {
id: 4,
text: "Question4",
selected:false
}, {
id: 5,
text: "Question5",
selected:false
}];

Это одна из моих попыток. Проблема в том, что чем больше полей выбора, тем я получаю беспорядок.

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

В принципе, мне нужно было что-то вроде этого:

<select ng-change="onChange()" ng-options='q.value for q in questions | filter:{selected:  false}' ng-model='option[$index]'><option value="">-- pick one --</option>  </select>

Но по какой-то причине индекс $ index не интерпретируется как текущий индекс, а как простая строка.

спросил(а) 2020-03-04T19:30:57+03:00 1 год, 4 месяца назад
1
Решение
118

Вы можете создать массив наборов вопросов. Используя ng-repeat, вы можете создать несколько выпадающих списков с тем же набором исходных параметров.

<div ng-repeat="set in questionSets track by set.id">
<select ng-model="value" ng-options="question.id as question.text for question in set.questions" ng-change="remove($index+1, value);"></select>
<br><br>
</div>

Используя ng-change, вы можете передать индекс массива набора вопросов. Затем вы можете удалить выбранный вопрос из всех других наборов вопросов.

$scope.remove = function(key, val) {
_.each($scope.questionSets, function(s) {

if(s.id !== key) {
s.questions = _.reject(s.questions, function(q) {
return q.id=== val;
});

}
})
}

Это не относится к случаю, когда пользователь меняет выбор несколько раз при первом выпадающем списке (и, следовательно, удаляются несколько параметров из всех остальных), но вы можете добавить эту общую идею.

http://plnkr.co/edit/XOTGEc8PfvbUTYIZcL7G?p=preview

ответил(а) 2020-03-04T19:41:20.844577+03:00 1 год, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема