49

以下のようなスパンタグがあり、クリックするとコントローラーの関数が呼び出されます。

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);
}

コントローラー関数のデータ属性の値を取得する必要があります。このキーワードと $event; を使ってみました。どちらも機能しませんでした。

助けてください。

4

3 に答える 3

83

さらに単純に、$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です。

于 2013-08-03T07:23:20.913 に答える
80

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);
}

これが例です

于 2013-08-03T04:35:29.940 に答える
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をテストしませんでした。

于 2014-02-26T14:27:19.630 に答える