我有一个奇怪的问题,我似乎无法解决问题。我使用的指令生成了我网站的树视图。当我选择一个站点时,我有两个选择框,其中填充了一个站点中的组和站点中的列表。填充选项时,它们都被选中。我检查了元素并且他们都有option="selected"
奇怪的是,当我点击一个选项时,所有其他选项都会消失,只剩下所选的选项。我已经在Chrome控制台中检查了来源,但是只保留选定的选项标签。
例如,“站点列表”选择框有多个选项,但是当我单击“旧文档”时,其他所有选项都消失了。在“站点组”中,已选择所有组 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>
答案 0 :(得分:3)
这种情况正在发生,因为选择列表中的ngOptions
与ngModel
绑定到同一个数组。 ngModel
需要是一个只包含所选值的不同数组。
以siteGroups
为例,正在发生的事情是选择列表选项已使用siteGroups
进行初始化,因为这些项目位于ngModel
(也是siteGroups
数组)。当您点击其中一个时,它会删除ngModel
中除您单击的项目之外的所有其他项目。由于ngOptions
被限制在同一个列表中,所有未选择的选项也会消失。
要解决此问题,请在范围内为每个列表中的选定值创建单独的数组属性。