Введите идентификатор кнопки пропуска в ng-click angular.js

Мне нужно передать идентификатор кнопки в Ionic Framework.

Вот что я пробовал.

В коде js:

angular.module('todo', ['ionic'])
.controller('TodoCtrl', function($scope) {
    {
        $scope.showAlert = function(btnId) {
            alert(btnId);
        };
    }
});

В html:

<button id="a" class="button button-light"  data="{{button.id}}" ng-click="showAlert(data.id)">
    Click Me
</button>

O/P: undefined

или

<button id="a" class="button button-light"  data="{{button.id}}" ng-click="showAlert(data)">
    Click Me
</button>

O/P: undefined

или

<button id="a" class="button button-light"  data="{{event.id}}" ng-click="showAlert(data.id)">
    Click Me
</button>

O/P: undefined

или

<button id="a" class="button button-light" ng-click="showAlert(this.id)">
    Click Me
</button>

O/P: undefined

или

<button id="btnId" class="button button-light" ng-click="showAlert('btnId')">
    Click Me
</button>

O/P: btnId

Является ли это правильным способом прямой записи идентификатора кнопки в функции?

Я упомянул несколько ответов, таких как . Поэтому я думаю, что я ошибаюсь в его использовании. Пожалуйста, дайте мне знать, что мне нужно изменить.

Ответ 1

Yo, проверьте этот смысл:

https://gist.github.com/lc-nyovchev/ed0a640a82a0f2dfd5a1

Это очень простой и наивный способ сделать это.

<div data-ng-init="btnId='asd';">
    <button data-ng-attr-id="btnId" class="button button-light" data-ng-click="showAlert(btnId)">
        Click Me
    </button>
</div>

Или вы можете иметь в своем контроллере:

$scope.btnId = 'asd'; 

Тогда вам не нужен блок div ng-init.

Или вы можете получить дескриптор события $в своем ng-клике и получить его цель, а затем получить свой идентификатор, но я бы не рекомендовал, что это не способ angular делать вещи:

<button id="bla" class="button button-light" data-ng-click="showAlert($event)">
    Click Me
</button>


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

Ответ 2

Это работает, если нет повторителей, если ретрансляторы являются атрибутами данных, должны иметь разные имена, а во-вторых, event.CurrentTarget.Id заставит его работать.