13

我需要在 Ionic Framework 中传递按钮 ID。

这是我尝试过的。

在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>

输出/输出:undefined

或者

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

输出/输出:undefined

或者

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

输出/输出:undefined

或者

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

输出/输出:undefined

或者

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

输出/输出:btnId

这是直接在函数中写入按钮ID的正确方法吗?

我提到了一些这样的答案。所以我认为我在使用它时犯了一些错误。请让我知道我需要改变什么。

4

2 回答 2

44

哟,检查这个要点:

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'; 

然后你不需要 ng-init 块 div。

或者你可以在你的 ng-click 中获取 $event 的句柄,并获取它的目标,然后获取它的 id,但我不建议这样做,这不是有角度的做事方式:

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


$scope.showAlert = function(event){
    alert(event.target.id);
}
于 2014-03-25T09:42:40.440 回答
3

如果没有中继器,则此方法有效,如果中继器是数据属性应具有不同的名称,其次 event.CurrentTarget.Id 将使其工作。

于 2015-10-09T15:14:15.733 回答