Подтвердить что ты не робот

Передача текущего элемента HTMLEng на ng-click

Возможно ли передать HTMLElement на ng-click, настроенный на контроллере?

Вот пример кода:

<div ng-controller="Controller">
   <ul ng-repeat="item in items">
      <li ng-click="handleThisElement($element)" id="{{item.id}}" >{{item.name}}</li>
   </ul>
</div>

Контроллер:

function ($scope) {
  $scope.items = [
    {name: 'Bilbo', id='Bilbo'},
    {name, 'Frodo', id='Frodo'},
    {name: 'Pippin', id='Pippin'},
    {name: 'Merry', id='Merry'},
    {name: 'Sam', id='Sam'}
  ];

  $scope.handleThisElement = function (element) {
     alert(element.id); // should alert (Bilbo || Frodo || Pippin || Merry || Sam)
  }

UPDATE

Не путайте, я сказал, что хочу получить весь элемент не только от модели.

$event.target - не работает в некоторых версиях IE.

4b9b3361

Ответ 1

HTML:

<div ng-controller="Controller">
   <ul ng-repeat="item in items">
      <li ng-click="handleThisElement($event)" id="{{item.id}}" >{{item.name}}</li>
   </ul>
</div>

И js:

function ($scope) {
  $scope.items = [
    {name: 'Bilbo', id='Bilbo'},
    {name, 'Frodo', id='Frodo'},
    {name: 'Pippin', id='Pippin'},
    {name: 'Merry', id='Merry'},
    {name: 'Sam', id='Sam'}
  ];

  $scope.handleThisElement = function ($event) {
     alert($event.target.id);
  }

Ответ 3

Используйте $watch для этого

$scope.$watch(function () {
    return document.activeElement;
}, function handler(newValue, oldValue) {
    $scope.oldActiveElement = oldValue;
});

Ответ 4

попробуйте

<div ng-controller="Controller">
   <ul ng-repeat="item in items">
     <li ng-click="handleThisElement(item)" id="{{item.id}}" >{{item.name}}</li>
   </ul>
</div>

function ($scope) {
   $scope.items = [
     {name : 'Bilbo', id:'Bilbo'},
     {name : 'Frodo', id:'Frodo'},
     {name : 'Pippin', id:'Pippin'},
     {name : 'Merry', id:'Merry'},
     {name : 'Sam', id:'Sam'}
   ];

   $scope.handleThisElement = function (element) {
    alert(element.id); // should alert (Bilbo || Frodo || Pippin || Merry || Sam)
   }
}