ngOptions выбрала все параметры по умолчанию и исчезающие параметры при выборе

StackOverflow https://stackoverflow.com//questions/22018732

Вопрос

У меня возникла странная проблема, которую я, похоже, не могу устранить с помощью моего представления.Я использую директиву, которая генерирует древовидное представление моего веб-сайта.Когда я выбираю один сайт, у меня есть два поля выбора, которые заполняются группами на одном сайте и списками на сайте.Когда параметры будут заполнены, все они будут выбраны.Я проверил элементы, и все они имеют option="selected" Более странным является то, что, когда я нажимаю на один вариант, все остальные исчезают и остается только выбранный вариант.Я проверил исходный код в консоли Chrome, и да, остался только выбранный тег опции.

enter image description here

Для 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 ограничен одним и тем же списком, все невыбранные параметры тоже исчезают.

Чтобы исправить это, создайте отдельные свойства массива в вашей области видимости для выбранных значений в каждом списке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top