2016-11-22 21 views
0

'删除选择'不起作用。这里有两个功能addNewChoiceremoveChoiceaddNewChoice正在工作,但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

如果你想要做的是去除数组最后一个项目,你可以简单地使用Array.prototype.pop()

$scope.removeChoice = function(){     
    $scope.choices.pop(); 
}; 
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中得到ng-repeat =“(index,friend)在朋友” –

+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>