2016-10-04 11 views
3

То, что я пытаюсь достичь, когда я нажимаю на кнопку загрузки он должен сделать Somthing еще и при нажатии на пункт он должен открыть новое окноionic2 ионным список с помощью кнопки и имеющий (щелчок) событие

<ion-list> 
    <ion-item *ngFor="let reading_material of reading_materials" (click)="gotoReadingMaterial(reading_material)"> 
     {{reading_material.title}} 
     <ion-icon item-right name="download" (click)="downloadMaterial(reading_material)"></ion-icon> 
    </ion-item> 
</ion-list> 

Но когда я нажимаю кнопку загрузки, оба события попадают. Есть ли способ подавить событие элемента, когда я нажимаю кнопку загрузки?

ответ

11

Вы можете решить эту проблему, используя event.stopPropagation();.

Пожалуйста, взгляните на this plunker.

, как вы можете видеть, я также отправить $event объект к обоим методам

<ion-list> 
    <ion-item *ngFor="let item of items" (click)="open($event, item)"> 
     {{ item }} 
     <ion-icon (click)="download($event, item)" item-right name="download"></ion-icon> 
    </ion-item> 
</ion-list> 

А потом я использовать эту информацию, чтобы остановить распространение события, поэтому только метод загрузки будет выполняться при нажатии кнопки значок загрузки

public open(event, item) { 
    event.stopPropagation(); 
    alert('Open ' + item); 
    } 

    public download(event, item) { 
    event.stopPropagation(); 
    alert('Download ' + item); 
    } 
+1

Ваш плукер кажется пустым? –

+2

@ MichaëlPolla Да, плункер использовал более старую версию Ionic. Я создам еще один и обновляю ответ как можно скорее. Во всяком случае, наиболее важные части кода - это то, что вы можете увидеть в ответе :) – sebaferreras

+2

@ MichaëlPolla плункер обновлен ... Извините за задержку :) – sebaferreras