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

Javascript 使用angularjs从子数组中删除项而不影响父数组,javascript,angularjs,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.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”中删除。

首先,您没有将参数传递给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”作为值传递给该函数。现在它将从$scope.airLinesFilterData数组中删除“Jai”,而不会从$scope.Names中删除值。我使用了angular.copy()

请参见这个js小提琴示例


谢谢

你好,Avinash,上面的代码名删除了“$scope.airLinesFilterData”和“$scope.Names”,我不想删除“$scope.Names”。我已再次编辑了代码。不要直接将$scope.Names分配给$scope.airLinesFilterData。相反,我使用了angular.copy。这将创建该变量的副本。这样它就不会删除$scope.Names中的值。