使用angularjs从子数组中删除项而不影响父数组

时间:2015-09-23 08:04:29

标签: javascript angularjs

这是我的代码

$scope.airLineFilter = function ("jai") {
$scope.Names=["sai","ram","jai","kiran","radha"];
      $scope.airLinesFilterData = $scope.Names;
      var airLinedata = $scope.airLinesFilterData.indexOf(data);
      if (airLinedata > -1) {
          $scope.airLinesFilterData.splice(airLinedata, 1);
      } else {
           $scope.airLinesFilterData.push(data);
      }
  };

如果我们删除“jai”,那么它将删除“$ scope.airLinesFilterData”而不是“$ scope.Names”中删除。

1 个答案:

答案 0 :(得分:2)

首先,你没有将参数传递给airLineFilter,因为你直接在该函数中给出了字符串值。这是错误的。你在indexOf方法中提到的数据是什么?我已经改变了你的功能如下。

angular.module('myApp', [])
.controller('myCtrl', function($scope){

    $scope.airLineFilter = function (value) {
    $scope.Names=["sai","ram","jai","kiran","radha"];
      $scope.airLinesFilterData = angular.copy($scope.Names);
      var airLinedata = $scope.airLinesFilterData.indexOf(value);
      if (airLinedata > -1) {
          $scope.airLinesFilterData.splice(airLinedata, 1);
      } else {
           $scope.airLinesFilterData.push(value);
      }
  };
    $scope.airLineFilter("jai");
});

在这里,我打电话给airLineFilter,我正在通过' Jai'作为该功能的价值。现在它将删除' jai'来自$ scope.airLinesFilterData数组,它不会从$ scope.Names中删除值。我使用了angular.copy();

请参阅此js小提琴示例。 http://jsfiddle.net/dprtrj2v/

由于