2016-04-29 6 views
2

ボタンをクリックすると、値が別の配列にプッシュされます。次に、同じボタンをクリックすると、プッシュアイテムが削除されます。 私のプロジェクトのpushingが正常に完了しました。しかし、同じボタンをクリックすると、配列内の最初の要素が選択されたものではなく削除されます。スプライスが正しく動作していないアレイを削除していますか?

これは私のhtmlコードです。

<a class="btn {{table.btnClass}} btn-success" ng-click="getTable(table)" style="padding-left:1px">{{table.tablename}}</a> 

これは私が

答えて

3

が配列

angular.forEach($scope.tableArray, function (list, index) { 
    ---------- 
    ------------------- 
    $scope.tableArray.splice(index,1) 
}) 
+0

ありがとうございます。私のために働く。 – SrinivasAppQube

0

からスプライスのために選択を削除するために、インデックスを使用し、foreachの中に二番目の引数を追加します助けてください、私のコントローラのコード

$scope.tableArray=[] 
$scope.tableslist=[] 
$scope.getTable=function(table){ 
    table.btnClass = table.btnClass == "btn-danger" ? "btn-success" : "btn-danger" 
    console.log(table) 
    var exists=false; 
    angular.forEach($scope.tableArray, function (list) { 
     if ((list.tablename == table.tablename)) { 
      console.log(list.tablename) 
      console.log(table.tablename) 
      exists=true; 
      $scope.tableArray.splice(list._id,1) 
      return false 
     } 
    }); 
    if(!exists){ 
    $scope.tableslist.push(table) 
    $scope.tableArray=$scope.tableslist 
    console.log($scope.tableArray) 
    table.color="red" 
    } 
} 

です配列内のアイテムは、下記のようにindexOfを使用できます。

$scope.tableArray.splice($scope.tableArray.indexOf(list),1);   
0

スプライスと同様の問題が発生しています。私の場合、誰かを助けるかどうかを判断するには、以下のように解決しなければなりませんでした。

オブジェクトを扱っている場合、indexOfはその配列内のオブジェクトではなく、配列に対して機能することに注意してください。インデックスを特定してこのケースを処理するには、以下のような処理を行うことができます。

$scope.removeReport = function(report) { 
    var index = $scope.contact.reports.map(function(r) { return r.id;}).indexOf(report.id); 
     if (index >= 0) { 
      $scope.contact.reports.splice(index, 1); 
     } 
} 
関連する問題