В настоящее время я работаю над проектом, где у меня есть кнопка, которая добавляет выпадающий список каждый раз, когда вы нажимаете на кнопку.AngularJS - Несколько выпадающих списков
При нажатии на кнопку отображается не только раскрывающийся список, но также кнопка «Удалить элемент», где вы можете удалить соответствующий элемент.
Затем, если вы выберете опцию из раскрывающегося списка, она отобразит другое раскрывающееся меню с большим количеством опций, в зависимости от того, что вы выбрали в первом выпадающем меню.
Вы можете выбрать из раскрывающегося списка два варианта, фильмы или игры.
А затем во втором выпадающем списке должен появиться список фильмов или список игр в зависимости от того, что вы выбрали.
Вы можете увидеть HERE текущую скрипку.
index.html:
<div ng-app="myApp" ng-controller="testCtrl">
<button ng-click = "addNewItem()">Add new Item</button>
<div ng-repeat="item in itemSet.item track by $index">
<button ng-click = "removeItem($index)">Remove item</button>
<select ng-model="category"
ng-change="changeCategory(category)"
ng-options="category as category for category in categoryTypes">
<option></option>
</select>
<select ng-show="movieSelected"
ng-model="movieType"
ng-options="movie as movie for movie in movieCategories">
<option></option>
</select>
<select ng-show="gameSelected"
ng-model="gameType"
ng-options="game as game for game in gameCategories">
<option></option>
</select>
</div>
</div>
app.js:
var myApp = angular.module('myApp', []);
myApp.controller('testCtrl', ['$scope', function ($scope) {
$scope.categoryTypes = ['Movies', 'Games'];
$scope.gameCategories = ['RPG', 'Sports'];
$scope.movieCategories = ['Action', 'SciFi'];
$scope.itemSet = { item : [] };
$scope.itemSet.item = [];
$scope.gameSelected = false;
$scope.movieSelected = false;
$scope.addNewItem = function() {
$scope.itemSet.item.push('');
};
$scope.removeItem = function (index) {
$scope.itemSet.item.splice(index, 1);
};
$scope.changeCategory = function(category) {
if(category == 'Movies') {
$scope.gameSelected = false;
$scope.movieSelected = true;
} else {
$scope.gameSelected = true;
$scope.movieSelected = false;
}
};
}]);
Есть некоторые вещи, которые идут не так с этим. Например, если я добавил 3 элемента, а затем хочу удалить первый, он удалит третий, затем второй и, наконец, первый, если вы продолжаете нажимать кнопку «Удалить элемент», кнопка.
Если я добавлю 3 элемента, и, например, я выбираю «фильмы» из первого раскрывающегося списка в первой строке, он отображает все остальные выпадающие списки с возможностью выбора элементов из списка фильмов на всех из них, даже если я ничего не выбрал из других строк.
Также, если вы хотите добавить, скажем, 2 пункта, в одном элементе вы выбираете первые «фильмы», а затем на втором вы выбираете «игры», «дополнительные» выпадающие списки покажут список игр соответствующего перечня предметов для каждого из случаев.
Фактический проект работает аналогично этому, но с 4 выпадающими меню, и информация поступает из базы данных, но я думаю, что с помощью Fiddle должно быть достаточно, чтобы получить идею и принять возможное решение для реального проекта.
Если кто-то может помочь мне в этом, я буду очень благодарен!
Основная проблема в том, что у вас есть один и тот же 'ngModel' для всех элементов в' ngRepeat'. – developer033