从一个数组中删除值并移动到另一个数组

Removing values from one array and moving to another Array

我有一个数组 $scope.multiRoles ,我需要通过单击删除按钮删除其中的值。删除的值应该移动到另一个数组 $scope.role。我可以通过调用 removeRole() 来删除数组,但无法将删除的值移动到另一个数组中。需要帮助。

Html:

<div ng-if="rolesAdded" class = "col-sm-12 col-xs-12">
  <span class="tag label tagStyle newStyling" value ="data" ng-repeat="data in multiRoles track by $index">
    <span>{{data}}</span>
    <a><i ng-click="removeRoles(index)"class="remove glyphicon glyphicon-remove-sign "></i></a> 
  </span>
</div>

JS:

$scope.removeRoles = function(index){
  if(($scope.multiRoles!== null ) && ($scope.multiRoles.length>1)) {
    $scope.multiRoles.splice(index,1);                         
  }

  $scope.rolesAdded = true;
};

您没有在任何地方添加它。并且由于您将索引用于逻辑,因此需要在删除它之前将其添加到另一个数组中。考虑这个

$scope.removeRoles = function(index){
    if($scope.multiRoles !== null && $scope.multiRoles.length > 1) {
        $scope.role.push($scope.multiRoles[index]);
        $scope.multiRoles.splice(index,1);            
    }
    $scope.rolesAdded = true;
};

另外 $scope.role 应该是现有的 array

我觉得在拼接数组之前推值是可以的

试试这个:

 $scope.removeRoles = function(index){
            if(($scope.multiRoles!== null ) && ($scope.multiRoles.length>1)) {
          $scope.role.push($scope.multiRoles[index])
          $scope.multiRoles.splice(index,1);            

            }

            $scope.rolesAdded = true;
        };
$scope.role = [];
$scope.removeRoles = function (index) {
if (($scope.multiRoles !== null) && ($scope.multiRoles.length > 1)) {
    $scope.role.push($scope.multiRoles[index])
    $scope.multiRoles.splice(index, 1);
}
$scope.rolesAdded = true;
};

我找到了解决方案:

JS :

  $scope.removeRoles = function(index,data){

        if(($scope.multiRoles!== null ) && ($scope.multiRoles.length>1)) {
               var index = $scope.multiRoles.indexOf(data);
      $scope.multiRoles.splice(index,1);
             $scope.role.push(data);