Получение атрибута элемента в функции ng-click в angularjs
У меня есть тег span, например ниже, который вызывает функцию в контроллере при нажатии.
HTML
<div class="row" ng-repeat="event in events">
<div class="col-lg-1 text-center">
<span class="glyphicon glyphicon-trash" data={{event.id}} ng-click="deleteEvent()">
</span>
</div>
</div>
контроллер
$scope.deleteEvent=function(){
console.log(this);
}
Мне нужно получить значение в атрибуте data в функции контроллера. Я попытался использовать это ключевое слово и $event; никто не работал.
Пожалуйста, помогите.
Ответы
Ответ 1
Попробуйте передать его непосредственно функции ng-click:
<div class="col-lg-1 text-center">
<span class="glyphicon glyphicon-trash" data="{{event.id}}"
ng-click="deleteEvent(event.id)"></span>
</div>
Затем он должен быть доступен в вашем обработчике:
$scope.deleteEvent=function(idPassedFromNgClick){
console.log(idPassedFromNgClick);
}
Здесь пример
Ответ 2
Еще проще, передайте объект $event
на ng-click
, чтобы получить доступ к свойствам события. В качестве примера:
<a ng-click="clickEvent($event)" class="exampleClass" id="exampleID" data="exampleData" href="">Click Me</a>
В вашей функции clickEvent() = function(obj) {}
вы можете получить доступ к значению data
следующим образом:
var dataValue = obj.target.attributes.data.value;
Что вернет exampleData
.
Здесь полный jsFiddle.
Ответ 3
Дополнение к Brett DeWoody: (обновляется сейчас)
var dataValue = obj.srcElement.attributes.data.nodeValue;
Прекрасно работает в IE (9+) и Chrome, но Firefox не знает свойства srcElement.
Я нашел:
var dataValue = obj.currentTarget.attributes.data.nodeValue;
Работает в IE, Chrome и FF, я не тестировал Safari.