2016-11-11 50 views
0

所以我有這個允許多選的下拉菜單。我正在使用ng-model,ng-options和ng-change子句。出於某種原因,我無法弄清楚如何防止將對象推入已存在的模型中。所以我試圖製作第二個臨時陣列,將它們推入,然後刪除任何重複項,但我也無法使其工作。讓我用我的代碼解釋。我的ng-model允許重複我不想要的

實例對象被推入選擇對象:

[{ 
 
\t \t userProfileID: "3f8c553c-3633-4fe9-a007-4346a783450c", 
 
\t \t firstName: 'Austin', 
 
\t \t lastName: 'Hunter', 
 
\t \t email: 'ahunteroutlook.com', 
 
\t \t password: 'admin', 
 
\t \t companyProfileID: "86660a5b-7f61-4238-889d-1cc3087947b9", 
 
\t \t accessLevel: 'admin' 
 
}, 
 
{ 
 
\t \t userProfileID: "bc579485-95a7-4e8d-bdde-52272923576e", 
 
\t \t firstName: 'Ashley', 
 
\t \t lastName: 'Jeanette', 
 
\t \t email: 'ashleygmail.com', 
 
\t \t password: 'admin', 
 
\t \t companyProfileID: "86660a5b-7f61-4238-889d-1cc3087947b9", 
 
\t \t accessLevel: '' 
 
}]

所以,很顯然,當我想重複檢查,我可以檢查的userProfileID的倍數。我有那麼多..

NG-切換功能:

$scope.changedDepartment = function(item) { 
 
    $scope.selectUser = []; 
 
\t $scope.users = []; 
 
\t $scope.tempUsers.length = 0; 
 
\t if ($scope.department.length > 0) { 
 
\t  if (item[0].DepartmentUsers.length > 0) { 
 
\t \t  $scope.users.length = 0; 
 
\t \t  for (var i = 0; i < item.length; i++) { 
 
\t \t  for (var j = 0; j < item[i].DepartmentUsers.length; j++) { 
 
\t \t  if (profile[0].userProfileID != item[i].DepartmentUsers[j].userProfileID) { 
 
       $scope.tempUsers.push(item[i].DepartmentUsers[j]); 
 
\t \t  } 
 
\t \t  } 
 
\t \t  }

(抱歉格式,複製和粘貼代碼,它完全符合我的壓痕搞砸)

所以這裏發生了什麼: 該函數看到我們點擊了選擇框中的某個東西,並將它傳遞給它。然後,它爲它內部的任何用戶搜索該項目,並將它們推入$ scope.tempUsers中。我需要用戶在$ scope.users中。所以我的計劃是通過$ scope.tempUsers並刪除任何重複,但我不知道如何。任何幫助,將不勝感激。

回答

0

我可以用這個方法來解決這個問題:

for (var i = 0; i < $scope.tempUsers.length; i++) { 
    for (var j = i + 1; j < $scope.tempUsers.length; j++) { 
     if ($scope.tempUsers[i].userProfileID == $scope.tempUsers[j].userProfileID) { 
      $scope.tempUsers.splice(j, 1); 
     } 
    } 
    $scope.users.push($scope.tempUsers[i]); 
} 
相關問題