Удаление значений из одного массива и перемещение в другой массив

У меня есть массив $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;
};

4 ответа

Решение

Я думаю, что толкание значения до объединения массива может работать.

Попробуй это:

 $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.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.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);
Другие вопросы по тегам