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

Получение атрибута элемента в функции 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; никто не работал.

Пожалуйста, помогите.

4b9b3361

Ответ 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.