2016-01-26 3 views
0

У меня есть директива Vue, которая обрабатывает HTTP-запросы. То, что я пытаюсь сделать, - это использовать обещания и подключить SweetAlert к процессу. Я первым стреляя onRequestSubmitУтилизация Promise Для управления потоком событий в VueJs

bind: function() { 
     this.el.addEventListener('click', this.onRequestSubmit.bind(this)); 
    }, 

И в onRequestSubmit

onRequestSubmit: function (e) { 
     e.preventDefault(); 

     this.fireFlashMessage() 
     .then(this.vm.$http[this.getRequestType()](this.el.getAttribute("data-delete-url"), this.aggregateData())) 
     .then(this.onComplete.bind(this)) 
     .catch(this.onError.bind(this)); 
    }, 

Я хочу fireFlashMessage вернуться верно, когда пользователь подтверждает, так что onRequestSubmit может делегировать запрос.

Мой вопрос: должен ли я обернуть fireFlashMessage в обещание и продолжить с , а затем, когда призывы возвращаются успешно? Я очень новичок в обещаниях и любопытных нахожусь в трудном положении, обворачивая вокруг себя голову.

+0

вы знаете свой код подразумевает, что 'fireFlashMessage 'возвращает' Promise', а не логический - если он возвращает 'true' - логическое значение не имеет метода' .then', поэтому код обречен на провал –

ответ

1

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

onRequestSubmit: function (e) { 
    e.preventDefault(); 

    swal({ 
      title: "Are you sure?", 
      showCancelButton: true, 
      confirmButtonText: "Yes" 
     }, 
     this.onRequestConfirm.bind(this) 
    ); 
}, 
onRequestConfirm: function() { 
    this.vm.$http[this.getRequestType()](this.el.getAttribute("data-delete-url"), this.aggregateData()) 
    .then(this.onComplete.bind(this)) 
    .catch(this.onError.bind(this)); 
} 

редактирование: удалены this.fireFlashMessage(), как больше не использует эту FUNC, хотя вы могли бы реорганизовать его снова, если вы хотите

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

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