从一个阵列中删除值并移动到另一个阵列

时间:2016-10-07 09:55:38

标签: angularjs arrays angularjs-ng-repeat array-splice

我有一个数组$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 个答案:

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

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

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