jquery angularjs onclick jquery-1.9

jquery - Angularjs ng-click: cómo obtener `this` datos?



onclick jquery-1.9 (4)

La solución correcta será pasar el ID como parámetro a la función de eliminación, como

<a data-id=''102'' ng-click=''delete(102)''>Delete</a>

entonces

$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''); } };

Esto no debería hacerse , solo para demostrar

Dentro de ng-click puede obtener el evento utilizando $event , por lo

<a data-id=''102'' ng-click=''delete($event)''>Delete</a>

entonces

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

Demostración: Fiddle

Supongamos que tengo este elemento en la lista con el evento angular ng-click .

<a data-id=''102'' ng-click=''delete()''>Delete</a>

¿Cómo puedo obtener los datos / información si this así?

$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''); } };


Para acceder a los atributos de etiqueta de enlace clicados

En jQuery ,

<a class=''test'' data-id=''102'' ng-click=''delete(102)''>Delete</a>

al hacer clic en el enlace de arriba se maneja como

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

Código de demostración para jQuery: fiddle

En Angularjs ,

<a class=''test'' data-id=''102'' ng-click=''delete($event)''>Delete</a>

al hacer clic en el enlace de arriba se maneja como

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

Código de demostración para Angularjs: fiddle


Si por alguna otra razón, aún necesita acceder al elemento, así es como lo hice:

<span ng-click="selectText($event)"></span>

y en el controlador

$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 };


También puede acceder a los datos del evento para Jquery en angular usando:

$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; }, {}); } };

Su elemento cliqueado debe contener un ng-clic como este

ng-click="myClickedEvent($event)"