2017-01-10 4 views
0

右側にボタンを含む項目を含むリストを作成しました。私は2つの異なる関数を書いています.1つはアイテムに直接クリックを処理する関数、もう1つは右のボタンです。Ionic:リスト項目をクリックするか、リスト項目のボタンをクリックするかを区別する

問題は、ボタンの結果を両方の関数を呼び出すことでクリックすることです。

(ボタン領域を除く)項目をクリックすると機能が呼び出され、右ボタンをクリックすると別の機能が呼び出されるように、.html(または可能であれば.js)を編集するにはどうすればよいですか。

CodePen Link

HTML:

<ion-list> 
     <ion-item ng-repeat='item in list' class='list-group-item' 
      item="item" 
      ng-click="clicker(item)" > 
      <a class="item item-button-right"> 
       <h2>Item {{item.id}}</h2> 
       <div class="buttons"> 
        <button class="button button-assertive" ng-click="onRemoveClick(item)"> 
        <i class="icon icon ion-close"></i> 
        </button> 
       </div> 
      </a> 
     </ion-item> 
    </ion-list> 

AngularJS:

angular.module('ionicApp', ['ionic']) 

.controller('list_controller', function($scope) { 

    $scope.clicker = function(item){ 
    alert('Item Clicked: '+item.id) 
}; 

    $scope.onRemoveClick = function(item){ 
    alert('Remove Clicked: '+item.id) 
}; 

$scope.list = [ 
    { id: 1 }, 
    { id: 2 }, 
    { id: 3 }, 
    { id: 4 }, 
    { id: 5 } 
]; 

}); 

答えて

0

することはできstopPropagationを使用します。私は左のボタンを使用したくない

ビュー

ng-click="onRemoveClick(item, $event);" 

のJs

$scope.onRemoveClick = function (item, $event) { 
    $event.stopPropagation(); 
} 
+0

以下の例。項目をクリックすると(ボタン領域を除く)、ジョブを実行し、右ボタンをクリックすると別のジョブを実行する必要があります。 – FRR

+0

あなたが主張するなら、ng-clickにstopPropagationを入れてみてください。 ng-click = "onRemoveClick(item); $ event.stopPropagation();" – digit

+0

はい、この問題を解決します。ありがとうございました。あなたが前に投稿したHTMLは問題を解決しません。回答を承認済みとするには、HTMLコードを編集または削除してください。 – FRR

関連する問題