我有一个angularjs控制器和html视图,它显示了一个员工姓名列表,如果他们是否是主管,最后是一个可供选择的主管列表。列表中始终至少有一个默认主管,在这种情况下是Sally。
主管下拉可以根据“是主管?”而改变。选择。如果员工被设置为主管,他们的名字将显示在下拉列表中。如果员工不是主管,他们的名字将从主管名单中删除,随后也会下拉。
在这个例子中,我们有默认的主管,Sally和另一名员工Tom也被标记为主管。
让我们把哈利的主管变成汤姆的主管。
现在,如果我将Tom改为不再是主管,我希望Harry的主管下拉菜单更改为默认主管Sally。但相反,在Harry旁边的下拉列表中会出现“空白”选项。
这就是问题,有没有人对如何解决这个问题有任何建议?
您可以在https://jsfiddle.net/w7gy6hn3/
找到代码<select ng-init="defaultSupervisorId = responsiblePerson.id"
ng-model="defaultSupervisorId"
ng-options="supervisor.id as (supervisor.name + ' ' + supervisor.id) for supervisor in supervisorList">
</select>
答案 0 :(得分:1)
这是更新的小提琴https://jsfiddle.net/55uk6m8L/ 只需将以下额外代码添加到控制器
$scope.updateDropDown = function(employee) {
for(var i=0;i<$scope.employees.length;i++)
{
if($scope.employees[i] != employee && $scope.employees[i].defaultSupervisorId == employee.id )
{
$scope.employees[i].defaultSupervisorId = $scope.supervisorList[0].id;
}
}
};
在splice方法之后的else块中的$ scope.updateSupervisorList函数中调用此函数
$scope.updateDropDown(employee);
并且在html中,我更改了这些行
<select ng-init="employeeInfo.defaultSupervisorId = responsiblePerson.id"
ng-model="employeeInfo.defaultSupervisorId"
ng-options="supervisor.id as (supervisor.name + ' ' + supervisor.id) for supervisor in supervisorList">
</select>