In the following code, when I delete the client, I want the TR line to disappear.
What is the best way to do this? Do I need to send a string as the deleteCustomer parameter? Do I have access to the TR DOM element inside AngularJS?
<html ng-app="mainModule"> <head> <script src="http://code.jquery.com/jquery-1.11.2.min.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script> <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script> <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet"> </head> <body ng-controller="mainController" style="padding: 20px"> <div class="col-lg-5"> <table style="width: 500px" class="table-striped table-bordered table table-hover"> <tr ng-repeat="customer in customers"> <td style="width:50px"><button ng-click="deleteCustomer(customer)">Delete</button></td> <td style="text-align:right">{{customer.id}}</td> <td>{{customer.firstName}}</td> <td>{{customer.lastName}}</td> </tr> </table> </div> <div class="col-lg-7"> <div class="panel panel-info"> <div class="panel-heading">Logger</div> <div class="panel-body" style="padding:0"> <table class="table table-bordered" style="margin:0"> <tr ng-repeat="loggedAction in loggedActions"> <td>{{loggedAction.action}}</td> <td>{{loggedAction.description}}</td> </tr> </table> </div> </div> </div> <script> var mainModule = angular.module('mainModule', []); function mainController($scope) { $scope.loggedActions = []; $scope.customers = [ {id: 1, firstName: 'Joe', lastName: 'Thompson'}, {id: 2, firstName: 'Hank', lastName: 'Howards'}, {id: 3, firstName: 'Zoe', lastName: 'Frappe'} ]; $scope.deleteCustomer = function (customer) { $scope.$emit('customerDeleted', customer); }; $scope.$on('customerDeleted', function (event, customer) { $scope.loggedActions.push({action: 'delete', description: 'Deleted customer ' + customer.firstName + ' ' + customer.lastName}); }); } </script> </body> </html>
source share