Начните с того, что я совершенно новичок в AngularJS, и у меня нет большого опыта с ним.
Я пытаюсь перенаправить пользователей в другое состояние, используя resolve
в состоянии маршрута. Мой код состояния маршрута такой:
const defaultTemplate = require('path-to-homepage-template/homepage.tpl');
module.exports = {
states: [
{
state: 'homepage',
config: {
url: '/',
templateUrl: defaultTemplate,
title: 'homepage',
controller: 'HomepageController',
controllerAs: 'homepage',
resolve: {
HomePageFormSeoResolver: 'HomePageFormSeoResolver'
}
}
}
]
};
Тогда мой класс распознавателя выглядит так:
const AngularInjected = require('app_core/angular-injected');
class HomePageFormSeoResolver extends AngularInjected {
static get $inject() {
return [
'Logger',
'CONFIG',
'$location',
'$state',
'$q'
];
}
constructor(...dependencies) {
super(...dependencies);
this._resolve();
}
/**
* Responsible to check if the the get param `formSeo` exists and it's value
* is `yes`
* @private
*/
_resolve() {
const deferred = this.deps.$q.defer();
const get_params = this.deps.$location.search();
// noinspection JSUnresolvedVariable
if (
typeof undefined !== typeof get_params.formSeo &&
'yes' === get_params.formSeo
) {
console.log('Here we are !!!!');
this.deps.$state.go('signup-confirmation');
deferred.resolve();
}
else {
deferred.resolve();
}
return deferred.promise;
}
}
module.exports = {
init: ngModule => {
ngModule.service(
'HomePageFormSeoResolver',
HomePageFormSeoResolver
);
}
};
Итак, когда я запускаю этот скрипт, я вижу в консоли браузера сообщение Here we are !!!!
, но перенаправление не работает.
Я также попробовал в том же коде блога следующие высказывания:
deferred.reject();
или
return;
или
return false;
Итак, я не знаю, есть ли какое-либо другое решение для моего дела или я делаю что-то неправильно.
Вы видите что-то не так?
(Имейте в виду, что статический метод $inject()
назначает все зависимости в свойстве класса deps
.)