2016-11-22 31 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>