Передача текущего элемента 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.
Ответы
Ответ 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);
}
Ответ 2
handleThisElement(item);
Ниже приведен плукер
http://plnkr.co/edit/Hv6DwKMRbYlQ43m8UQkU?p=preview
Ответ 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)
}
}