2016-08-11 6 views
0

私はanglejsコントローラとhtmlビューを持っています。従業員名のリストを表示します。もしそれらがスーパーバイザーかどうか、そして最後にリスト選択する監督者の数。リストには常に少なくとも1人のデフォルトスーパーバイザーが存在します(この場合はSallyです)。アイテムがリストから削除されたときに選択ボックスにデフォルトオプションを設定する方法 - angularjs

スーパーバイザードロップダウンは、「スーパーバイザーですか?」に従って変更できます。選択。従業員がスーパーバイザーに設定されている場合、その名前がドロップダウンに表示されます。従業員がスーパーバイザーでないように設定されている場合、その名前はスーパーバイザーリストからドロップされ、その後ドロップダウンもドロップされます。

この例では、デフォルトのスーパーバイザーSallyと他の1人の従業員Tomもスーパーバイザーとしてマークされています。

ハリーの監督をトムの監督に変更できます。

私はTomがスーパーバイザーになれないように変更すると、スーパーバイザーのドロップダウンがデフォルトのスーパーバイザー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

でコードを見つけることができますここで更新フィドル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; 
    } 
} 

    }; 

呼び出し、この関数に余分なコードの下に追加しています。 updateSupervisorListはスプライスメソッドの後elseブロック内で機能します

$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> 
+0

を変更。 – Jannie

関連する問題