2016-05-26 8 views
1

Я создал тост с ionic2 (+ angular2 с javascript, а не машинописный текст), где пользователь удаляет элемент из списка.ionic2 - создать функцию только тогда, когда пользователь нажимает «закрыть» внутри Toast

До сих пор так хорошо, теперь я хочу добавить кнопку Undo (замените Close by Undo) внутри тоста, чтобы вернуть его в список и в то же время Отложить тост.

Мой код до сих пор:

archiveItem(item) { 
    let toast = Toast.create({ 
     message: 'Item archived.', 
     duration: 2000, 
     showCloseButton: true, 
     closeButtonText: 'Undo', 
     dismissOnPageChange: true, 
    }); 

    var index = this.items.indexOf(item); 
    this.items.splice(index, 1); //remove the item 


    toast.onDismiss(() => { 
     console.log('Dismissed toast'); 
     this.items.splice(index, 0, item); //put back the item on right place 
    }); 


    this.nav.present(toast); 
} 

Когда я нажимаю Undo, элемент возвращается в списке, то проблема заключается в том, что если бы я не нажал на него, он возвращается в список.

Я полагаю, мне нужно создать еще одну функцию в Undo, но я не знаю, как сделать это, и Ionic2 DOCS не говорить об этом ...

Спасибо :)

ответ

7

Edit:

Попробуйте это:

toast.onDismiss((data, role) => {  
     console.log('Dismissed toast'); 
     if (role== "close") { 
      this.items.splice(index, 0, item); //put back the item on right place 
     } 
    }); 

редактирования: переименованы параметры для ясности

+0

Ничего себе, это работает, спасибо! Не могли бы вы объяснить мне, что «отклонено» «закрыть»? –

+0

Это не задокументировано. Если вы посмотрите на код тоста (в ваших node_modules), вы увидите, что он передает (null, role) обратный вызов onDismiss viewcontroller. Помните, что, поскольку это не задокументировано, это может сломаться в будущих версиях. –

+0

получил это! Большое вам спасибо. Я буду следить за ним. –

 Смежные вопросы

  • Нет связанных вопросов^_^