ngOptions默认选择所有选项,并在select上消失选项

时间:2014-02-25 15:27:59

标签: javascript angularjs select ng-options

我有一个奇怪的问题,我似乎无法解决问题。我使用的指令生成了我网站的树视图。当我选择一个站点时,我有两个选择框,其中填充了一个站点中的组和站点中的列表。填充选项时,它们都被选中。我检查了元素并且他们都有option="selected"奇怪的是,当我点击一个选项时,所有其他选项都会消失,只剩下所选的选项。我已经在Chrome控制台中检查了来源,但是只保留选定的选项标签。

enter image description here

例如,“站点列表”选择框有多个选项,但是当我单击“旧文档”时,其他所有选项都消失了。在“站点组”中,已选择所有组 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>

Service and more of the view

1 个答案:

答案 0 :(得分:3)

这种情况正在发生,因为选择列表中的ngOptionsngModel绑定到同一个数组。 ngModel需要是一个只包含所选值的不同数组。

siteGroups为例,正在发生的事情是选择列表选项已使用siteGroups进行初始化,因为这些项目位于ngModel(也是siteGroups数组)。当您点击其中一个时,它会删除ngModel中除您单击的项目之外的所有其他项目。由于ngOptions被限制在同一个列表中,所有未选择的选项也会消失。

要解决此问题,请在范围内为每个列表中的选定值创建单独的数组属性。