В настоящее время я работаю над созданием формы, которая позволит пользователю добавлять новые возможности в свою коллекцию на основе возможностей, которые они выбирают. Эта форма структурирована как таблица, состоящая из флажков и выпадающих списков. Флажок позволяет пользователям выбирать, какую возможность они хотят добавить, а раскрывающийся список позволяет им выбирать свой уровень знаний с этой возможностью.Передача значения флажка и выпадающего списка в тот же массив
Вот HTML для формы:
<form class="listOfCaps">
<table>
<tbody>
<tr ng-repeat-start="cap in capsarr"></tr>
<tr ng-repeat-start="capname in filteredCaps track by capname.cid"></tr>
<td>
<input type="checkbox" name="selectedCaps[]" value="{{capname}}" ng-model="capname.selected" /> <span>{{capname.capname}}</span>
</td>
<td>
<span class="custom-dropdown custom-dropdown--white">
<select
class="custom-dropdown__select custom-dropdown__select--white"
name = "selectedExp[]"
ng-options = "exp.id as exp.level for exp in expertise"
ng-model = "exp">
<option value="">Select One</option>
</select>
</span>
</td>
<tr ng-repeat-end="capname in cap.capabilities"></tr>
<tr ng-repeat-end="cap in capsarr"></tr>
</tbody>
</table>
</form>
То, что я хочу сделать, это иметь значение флажка и выпадающего заполнить массив или обновить значение в этом массиве, если изменилось. Я попытался сделать это, и мне удалось получить значения флажка для заполнения массива. Я использовал $ watch для этого, поэтому всякий раз, когда он проверяется, он добавляется, и когда он не установлен, он удаляется. Я не могу понять, как применить это к выпадающему значению в тех же часах $, чтобы эти значения были добавлены к одному и тому же объекту в массиве.
Вот код контроллера у меня есть:
$scope.expertise = [
{id: '1', level: 'Certified'},
{id: '2', level: 'Knowledgable'},
{id: '3', level: 'Interested'}
];
$scope.selection = [];
$scope.$watch('filteredCaps | filter:{selected:true}', function (newValues) {
$scope.selection = newValues.map(function (capname) {
return {"capname" : capname.capname, "cid": capname.cid};
});
}, true);
Примечание: filteredCaps массив хранится в $ scope.filteredCaps от предыдущей функции. Этот массив содержит объекты, состоящие из имени возможностей и ид
ли это быть массивом? Вы можете использовать объект, а затем преобразовать его в массив, когда (если) необходимо –
@JoaoLeal Я думаю, это действительно не обязательно быть массивом на данный момент. Причина, по которой я задал массив, - это то, что я могу пропустить его позже, когда хочу опубликовать полученные результаты в моей базе данных. – benishea