我的ng模型允许重复,当我不想要它

时间:2016-11-11 15:08:27

标签: javascript angularjs ionic-framework

所以我有这个下拉菜单,允许多个选择。我正在使用ng-model,ng-options和ng-change子句。出于某种原因,我无法弄清楚如何防止将对象推入已经存在的模型中。所以我试着制作第二个临时数组来推送它们,然后删除任何重复项,但我也无法让它工作。让我用我的代码解释一下。

将对象推入选择对象:

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

很明显,当我想检查重复项时,我可以检查userProfileID的倍数。我得到了那么多..

ng-change功能:

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

(对不起格式化,复制并粘贴代码,它完全与我的缩进相混淆)

那么这里发生了什么: 该功能是看到我们点击了选择框中的内容,将该项目传递给该项目。然后它在该项目中搜索其中的任何用户,并将它们推送到$ scope.tempUsers中。我需要用户在$ scope.users中。所以我的计划是通过$ scope.tempUsers并删除任何重复项,但我无法弄清楚如何。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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]);
}