Angularjs ng-click: comment obtenir les données `this`?

Disons que j’ai cet élément dans la liste avec un événement angular ng-click .

 Delete 

Comment puis-je obtenir les données / informations si this alors?

  $scope.delete = function() { var id = $(this).attr('data-id'); console.log(id); // I want to get 102 as the result if (confirm('Are you sure to delete?')) { $('#contactsGrid tr[data-id="' + id + '"]').hide('slow'); } }; 

La bonne solution sera de passer l’ID en tant que paramètre à la fonction de suppression comme

 Delete 

puis

  $scope.delete = function(id) { console.log(id); // I want to get 102 as the result if (confirm('Are you sure to delete?')) { $('#contactsGrid tr[data-id="' + id + '"]').hide('slow'); } }; 

Cela ne devrait pas être fait , mais juste pour démontrer

À l’intérieur de ng-click vous pouvez obtenir l’événement en utilisant $event , donc

 Delete 

puis

 $scope.delete = function (e) { var id = $(e.target).data('id'); console.log(id); // I want to get 102 as the result }; 

Démo: violon

Vous pouvez également accéder aux données d’événement pour Jquery en angular en utilisant:

  $scope.myClickedEvent = function(clickEvent) { $scope.clickEvent = simpleKeys(clickEvent); angular.element(clickEvent.currentTarget); console.log(angular.element(clickEvent.currentTarget).text()); /* * return a copy of an object with only non-object keys * we need this to avoid circular references */ function simpleKeys (original) { return Object.keys(original).reduce(function (obj, key) { obj[key] = typeof original[key] === 'object' ? '{ ... }' : original[key]; return obj; }, {}); } }; 

Votre élément cliqué devrait contenir un ng-click comme celui-ci

 ng-click="myClickedEvent($event)" 

Pour accéder aux atsortingbuts de balise de lien cliqués

Dans jQuery ,

 Delete 

en cliquant sur le lien ci-dessus est traité comme

 $('.test').click(function(){ console.log($(this).attr('data-id')); }); 

Code de démonstration pour jQuery: violon

A Angularjs ,

 Delete 

en cliquant sur le lien ci-dessus est traité comme

 $scope.delete = function (e) { console.log($(e.currentTarget).attr("data-id")); } 

Code de démo pour Angularjs: violon

Si pour une autre raison, vous devez toujours accéder à l’élément, voici comment je l’ai fait:

  

et dans le contrôleur

 $scope.selectText = function(event) { var element = event.currentTarget; // returns the span DOM Element // Now you can access its dataset just like in plain old JS // In my case it was for selecting the content of a tag on click anywhere on the tag };