2016-10-07 8 views
-1

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

Дублированный [здесь] (http://stackoverflow.com/questions/39911601/удаления-а-значение-от-ан-массив-и-скользящих их к другому-массиву)? – DieuNQ

ответ

0

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

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

$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; 
     }; 
1

Вы не добавлять его в любом месте. И поскольку вы используете индекс для своей логики, вам нужно добавить его в другой массив, прежде чем удалять его. Рассмотрим этот

$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

1
$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; 
}; 
+0

У вас будет просто нажать этот элемент на другой массив, прежде чем удалять его, вот и все :) – Jigar7521

+0

Хорошая работа, но всегда приятно, если вы можете включить более подробное объяснение своего кода. –

+0

Да, это правильно, но я написал его из кода существующего вопроса. Но ваше предложение на самом деле хорошая идея, спасибо. :) – Jigar7521

0

Я получил решение:

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);