ngOptions выбрала все параметры по умолчанию и исчезающие параметры при выборе
-
21-12-2019 - |
Вопрос
У меня возникла странная проблема, которую я, похоже, не могу устранить с помощью моего представления.Я использую директиву, которая генерирует древовидное представление моего веб-сайта.Когда я выбираю один сайт, у меня есть два поля выбора, которые заполняются группами на одном сайте и списками на сайте.Когда параметры будут заполнены, все они будут выбраны.Я проверил элементы, и все они имеют option="selected"
Более странным является то, что, когда я нажимаю на один вариант, все остальные исчезают и остается только выбранный вариант.Я проверил исходный код в консоли Chrome, и да, остался только выбранный тег опции.
Для exmaple поле выбора списков сайтов имеет несколько опций, но когда я нажал на Старые документы, все остальные исчезли.В группах сайта все группы уже выбраны Ctrl:
spApp.controller('sitesCtrl',
function sitesCtrl($scope, $q, $modal, UserService, GroupService, SiteService){
//Options for tree controller directive
$scope.treeOptions = {
nodeChildren: "children",
dirSelectable: true,
injectClasses: {
ul: "a1",
li: "a2",
liSelected: "a7",
iExpanded: "a3",
iCollapsed: "a4",
iLeaf: "a5",
label: "a6",
labelSelected: "a8"
}
}
//Returns siteMap for tree controller directive
$scope.siteMap = SiteService.getSiteMap();
//Returns selected sites information: grous, lists, title, url
$scope.showSelected = function(site){
var siteData = SiteService.getSiteInfo(site);
//sets sites title and url in view
$scope.site = site;
$scope.siteGroups = siteData.groups;
$scope.siteLists = siteData.lists;
}
}
);
Вид:
<div class="siteGroups">
<label for="siteGroups">Site Groups</label>
<select
multiple
name="siteGroups"
id="siteGroups"
class="siteGroups"
ng-model="siteGroups"
ng-options="g.name for g in siteGroups">
</select>
</div>
<div class="btm1 animated fadeInUp">
<label for="siteLists">Site Lists </label>
<select multiple
id="siteLists"
ng-model="siteLists"
ng-options="l.title for l in siteLists">
</select>
</div>
Решение
Это происходит потому, что ngOptions
в выбранных списках они ограничены тем же массивом, что и ngModel
. ngModel
должен быть другой массив, содержащий только выбранные значения.
С siteGroups
в качестве примера, происходит то, что параметры списка выбора инициализируются с помощью siteGroups
, и все они выбраны, потому что элементы находятся в ngModel
(также siteGroups
массив).Когда вы нажимаете на один из них, теперь все остальные элементы удаляются из ngModel
кроме того, на который вы нажали.С тех пор как ngOptions
ограничен одним и тем же списком, все невыбранные параметры тоже исчезают.
Чтобы исправить это, создайте отдельные свойства массива в вашей области видимости для выбранных значений в каждом списке.