【问题标题】:Removing values from one array and moving to another Array从一个数组中删除值并移动到另一个数组
【发布时间】:2016-10-07 09:55:38
【问题描述】:

我有一个数组 $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;
};

【问题讨论】:

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


【解决方案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】:

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

$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

【讨论】:

    【解决方案3】:

    我认为在拼接数组之前推送值可以工作。

    试试这个:

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

    【讨论】:

      【解决方案4】:

      我有一个解决方案:

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

      【讨论】:

        猜你喜欢
        • 2017-02-16
        • 2013-02-19
        • 1970-01-01
        • 2021-07-27
        • 2018-12-20
        • 1970-01-01
        • 2018-02-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多