2016-11-22 12 views
0

「選択肢を削除」が機能していません。ここには2つの機能addNewChoiceremoveChoiceがあります。 addNewChoiceは動作していますが、removeChoiceは機能しません。私はそれを解決する方法を知らない。ここに私のコードは以下の通りです:AngularJSのリピートメソッドで削除できない

<?php $obj = 1;?> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"> 
</script> 
<script type="text/javascript"> 
    var app = angular.module('shanidkvApp', []); 
    app.controller('MainCtrl', function($scope) 
    { 
      $scope.choices = [{id: 'choice1'}]; 
      $scope.addNewChoice = function() 
      { 
       var newItemNo = $scope.choices.length+1; 
       $scope.choices.push({'id':'choice'+newItemNo}); 
      }; 

      $scope.removeChoice = function(index) 
      { 
       var lastItem = $scope.choices.length-1; 
       $scope.choices.splice(index,1); 
      }; 

    }); 
</script> 
<%--here is my html --%> 
<div class="btn btn-primary" ng-show="$last" ng-click="removeChoice()">Remove</div> 
+0

'index'は、関数内で定義されていません。 – charlietfl

答えて

1

を使用することができ、配列内の最後の項目を削除している場合は、インデックスパラメータを削除し、削除するlastItemを使用する必要があるように思えます

$scope.removeChoice = function() 
{ 
    var lastItem = $scope.choices.length-1; 
    $scope.choices.splice(lastItem,1); 
}; 
0

ng-clickでremoveChoice関数にインデックスを渡していませんでした。この関数でアイテムのインデックスを渡す必要があります -

<div class="btn btn-primary" ng-show="$last" ng-click="removeChoice(index)">Remove</div> 

インデックスはng-repeatループから取得できます。

または、最後のアイテムを削除したい場合は、インデックスキーを関数に渡す必要はありません。しかし、あなたは以下のように機能に変更する必要がある -

$scope.removeChoice = function(index) 
     { 
      var lastItem = $scope.choices.length-1; 
      $scope.choices.splice(lastItem,1); 
     }; 
+0

ng-repeatに '$ index'がありますが、' index'はありません – charlietfl

+0

ng-repeat = "友人のインデックス、友人"としてインデックスを取得できます。 –

+0

あなたはそれを表示していません。 OPが 'index'を使って試してみると、あなたが他の修正をしていないと表示された場合、それはうまくいきません。 – charlietfl

0

 var app = angular.module('shanidkvApp', []); 
 
    app.controller('MainCtrl', function($scope) 
 
    { 
 
      $scope.choices = [{id: 'choice1'}]; 
 
      $scope.addNewChoice = function() 
 
      { 
 
       var newItemNo = $scope.choices.length+1; 
 
       $scope.choices.push({'id':'choice'+newItemNo}); 
 
      }; 
 

 
      $scope.removeChoice = function() 
 
      { 
 
      console.log($scope.choices); 
 
       var lastItem = $scope.choices.length-1; 
 
       $scope.choices.splice(lastItem,1); 
 
      console.log($scope.choices); 
 
      }; 
 

 
    });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<!--here is my html --> 
 
<body ng-app="shanidkvApp" ng-controller="MainCtrl"> 
 
<div class="btn btn-primary" ng-click="removeChoice()">Remove</div> 
 
    <div class="btn btn-primary" ng-click="addNewChoice()">Add</div> 
 
    <p></p> 
 
</body>

関連する問題