在angularjs中获取ng-click函数中元素的属性

Sar*_*nan 46 javascript 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>
Run Code Online (Sandbox Code Playgroud)

调节器

$scope.deleteEvent=function(){
    console.log(this);
}
Run Code Online (Sandbox Code Playgroud)

我需要在控制器函数中获取data属性中的值.我尝试过使用这个关键字和$ event; 没人工作.

请帮忙.

Bre*_*ody 81

更简单的是,传递$event对象ng-click以访问事件属性.举个例子:

<a ng-click="clickEvent($event)" class="exampleClass" id="exampleID" data="exampleData" href="">Click Me</a>
Run Code Online (Sandbox Code Playgroud)

在您的clickEvent() = function(obj) {}函数中,您可以data像这样访问值:

var dataValue = obj.target.attributes.data.value;
Run Code Online (Sandbox Code Playgroud)

哪会回来exampleData.

这是一个完整的jsFiddle.

  • 我发现你可以做`obj.target.getAttribute("data")`看起来更可读IMO,js在这里小提琴:http://jsfiddle.net/zpApT/ (9认同)
  • 请注意,如果您有一个自定义数据属性,例如`data-example-attr =“ whatever”`,则需要在JS中像这样引用它:`obj.toElement.dataset.exampleAttr` (2认同)

jan*_*sen 79

尝试将其直接传递给ng-click功能:

<div class="col-lg-1 text-center">
    <span class="glyphicon glyphicon-trash" data="{{event.id}}"
          ng-click="deleteEvent(event.id)"></span>
</div>
Run Code Online (Sandbox Code Playgroud)

然后它应该在你的处理程序中可用:

$scope.deleteEvent=function(idPassedFromNgClick){
    console.log(idPassedFromNgClick);
}
Run Code Online (Sandbox Code Playgroud)

这是一个例子