Я сделал функцию, чтобы подтвердить почтовый адрес. Я хотел бы показать оповещение тостера, когда пользователь подтвердит, что это почта. 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, но, похоже, он немного непригоден.
Хорошо, поэтому я нашел пакет, который выполняет работу для меня. 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 !');
и вызвать его в компоненте
Вам нужно подождать, пока ваш вызов 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 для экрана загрузки.