如何从列表中删除项目时,如何在选择框中设置默认选项 - angularjs

时间:2016-08-11 10:46:27

标签: javascript html angularjs

我有一个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>

1 个答案:

答案 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>