2017-02-09 4 views
0
<div class="col-md-2"> 
    <md-button class="md-raised md-primary" ng-click="deleteDiv()">Remove</md-button> 
    </div> 
scope.deleteDiv = function() { 
     alert(scope.itemsToAdd.length); 
     if(scope.itemsToAdd.length > 1) { 
      scope.itemsToAdd.splice(scope.itemsToAdd.length,1) 
     } 
    }; 

Привет. Я новичок в AngularJs.I есть сомнения в удалении динамически созданного div. itemsToAdd - это массив, который содержит четыре поля. Я динамически добавляю эти поля, используя push и ng-repeat. При нажатии кнопки «Удалить» я получаю длину массива и удаляю только, если он больше 1. Процедура удаления, которую я опубликовал, Is верно? где я делаю неправильно? .THANKSУдалить последний элемент из списка в angularjs

+0

вы можете использовать array_splice(). – Mohammed

+0

Значит, вы всегда хотите удалить последний? Или у вас есть кнопка удаления на объект? – devqon

+0

@Mohammed, так что вы говорите мне попробовать scope.itemsToAdd_splice()? –

ответ

1

Вам необходимо передать индекс элемента, который нужно удалить, в качестве параметра th e Функция сращивания:

if(scope.itemsToAdd.length > 1) { 
    scope.itemsToAdd.splice(scope.itemsToAdd.length-1,1); //index of the last element is the length of the array minus 1 
} 
+0

Спасибо большое. Он работал :) –

0

GO через это, Его один из типа вы хотите

<html> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
<body ng-app="myApp" ng-controller="todoCtrl"> 
 

 
<h2>My Todo List</h2> 
 

 
<form ng-submit="todoAdd()"> 
 
    <input type="text" ng-model="todoInput" size="50" placeholder="Add New"> 
 
    <input type="submit" value="Add New"> 
 
</form> 
 

 
<br> 
 

 
<div ng-repeat="x in todoList"> 
 
    <input type="checkbox" ng-model="x.done"> <span ng-bind="x.todoText"></span> 
 
</div> 
 

 
<p><button ng-click="remove()">Remove marked</button></p> 
 

 
<script> 
 
var app = angular.module('myApp', []); 
 
app.controller('todoCtrl', function($scope) { 
 
    $scope.todoList = [{todoText:'Clean House', done:false}]; 
 

 
    $scope.todoAdd = function() { 
 
     $scope.todoList.push({todoText:$scope.todoInput, done:false}); 
 
     $scope.todoInput = ""; 
 
    }; 
 

 
    $scope.remove = function() { 
 
     var oldList = $scope.todoList; 
 
     $scope.todoList = []; 
 
     angular.forEach(oldList, function(x) { 
 
      if (!x.done) $scope.todoList.push(x); 
 
     }); 
 
    }; 
 
}); 
 
</script>

+1

Подумайте, как решить проблему с OPs, а не просто отправлять код, чтобы сделать ваш ответ более полезным для OP и будущих читателей. – LionC

0
<tr ng-repeat="person in persons track by $index"> 
     <td>{{person.name}} - # {{person.id}}</td> 
     <td>{{person.description}}</td> 
     <td nowrap=nowrap> 
      <a href="#!/edit"><i class="icon-edit"></i></a> 
      <button ng-click="delete($index)"><i class="icon-minus-sign"></i></button> 
     </td> 
</tr> 

и в controlelr

$scope.delete=function(index){ 
    $scope.persons.splice(index,1); 
} 
+0

моя кнопка находится за пределами ng-repeat, поэтому я не могу использовать индексную переменную –

+0

вы можете делиться жалобой таблицы, я могу найти обходное решение для этого –

Смежные вопросы