Как передать предупреждение через route.js в ember

1

Я сделал функцию, чтобы подтвердить почтовый адрес. Я хотел бы показать оповещение тостера, когда пользователь подтвердит, что это почта. Howwver, я застрял в маршруте /users/confirm.js, и я не знаю, как передать его через компонент оттуда.

import ApplicationRoute from '../../routes/application';
import Ember from 'ember';
import ENV from "../../config/environment";

export default ApplicationRoute.extend({
  beforeModel(params) {
    const confirmationToken = params.queryParams.confirmation_token;

    // Call backend with confirmation token
    Ember.$.ajax({
      url: ENV.API_HOST + '/users/confirmation?confirmation_token=' + confirmationToken,
      type: 'GET',
      headers: {
        'x-api-key': ENV.APP.api_key
      }
    this.transitionTo('app');

    return {};
  }
});

Я подумывал о прохождении параметров через переходTo, но, похоже, он немного непригоден.

Теги:
routes
ember.js

2 ответа

1
Лучший ответ

Хорошо, поэтому я нашел пакет, который выполняет работу для меня. Https://github.com/poteto/ember-cli-flash. И мне просто нужно добавить строку ниже в мое подтверждение. Js

 flashMessages: Ember.inject.service(),
Ember.get(this, 'flashMessages').success('Congratulations ! You\'ve just confirm your email address !');

и вызвать его в компоненте

0

Вам нужно подождать, пока ваш вызов ajax будет разрешен. Затем вы можете transitionTo своему app -route и предоставить параметр запроса, который содержит флаг успеха или ошибки. Что-то вроде этого должно работать:

model(params, transition) {
  const confirmationToken = transition.queryParams.confirmation_token;

  // Call backend with confirmation token
  return Ember.$.ajax({
    url: ENV.API_HOST + '/users/confirmation?confirmation_token=' + confirmationToken,
    type: 'GET',
    headers: {
      'x-api-key': ENV.APP.api_key
    }
  });
},

afterModel(response) {
  this.transitionTo('app', { queryParams: { success: response.success }});
}

В вашем app -route вы можете использовать успех queryParam и передать его в компонент, чтобы показать ваш тост. Хороший побочный эффект: вы можете использовать свое confirmation -route для экрана загрузки.

  • 0
    Спасибо за ответ. Похоже, что если пользователь повторно откроет страницу, он снова попадет на уведомление об этом в URL из-за перехода

Ещё вопросы

Сообщество Overcoder
Наверх
Меню