AngularJS $ state.go нет перенаправления с ExpressJS

0

мы надеемся, что некоторые столкнулись с моей проблемой раньше, это действительно странно. Я получаю странное поведение при использовании ExpressJS для локального использования файлов AngularApp.

У меня есть следующий оператор в моем основном контроллере (обертывание всего тела):

else{
            console.log('Forwarding to Login');
            $state.go('signin', {});
            console.log($state.$current);
}

Он фактически вызван, но ничего не происходит, и текущее состояние пусто.

Теперь смешная часть: я просто установил nginx локально и указал корневой путь файла конфигурации по умолчанию в корневую папку проекта. Все работает.

Итак, что может заставить ExpressJS не перенаправлять и не загружать контроллер при использовании $ state.go? Использование ui-sref работает...

Здесь мой express.js config:

var express = require('express'); var app = express();

app.use('/libs', express.static(__dirname + '/libs')); app.use('/assets', express.static(__dirname + '/assets')); app.use('/app', express.static(__dirname + '/app')); //app.use(express.errorHandler());

app.set('port', process.env.PORT || 3000);


app.all('/*', function(req, res, next) {
    // Just send the index.html for other files to support HTML5Mode
    res.sendFile('index.html', { root: __dirname }); });

/**  * Start Server  */

var server = app.listen(3000, function () {

 var host = server.address().address;  var port = server.address().port;

 console.log('X is listening at http://%s:%s', host, port);

});

Вот мои состояния

$stateProvider
        // Dashboard
        .state('dashboard', {
            url: "/dashboard",
            templateUrl: "/app/components/dashboard/dashboard.view.html",
            data: {pageTitle: 'Home', pageSubTitle: 'MyTitle Workspace'},
            resolve: {
                deps: ['$ocLazyLoad', function ($ocLazyLoad) {
                    return $ocLazyLoad.load({
                        name: 'MyApp',
                        insertBefore: '#ng_load_plugins_before',
                        files: [
                        ]
                    });
                }]
            }
        })
        // Login
        .state('signin', {
            url: '/signin',
            templateUrl: '/app/components/login/login.view.html',
            data: {pageTitle: 'Sign in', pageSubTitle: ''},
            controller: 'LoginController',
            controllerAs: 'loginCtrl',
            resolve: {
                deps: ['$ocLazyLoad', function ($ocLazyLoad) {
                    return $ocLazyLoad.load({
                        name: 'MyApp',
                        insertBefore: '#ng_load_plugins_before', 
                        files: [
                            '/app/shared/authentication/login.controller.js'
                            ]
                    });
                }]
            }
        })

Я бы очень признателен за любую помощь :)

Лучший, Патрик

Теги:
express
nginx
angular-ui-router

1 ответ

0

Не зная, как выглядит ваш маршрут, я рекомендую добавить следующее к вашему.run:

app.run(function ($rootScope, $state) {
    $rootScope.$on('$stateChangeStart', function (event, next) {
        /* Fired prior to any route change */
    });

    $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {
        /* this will fire on EVERY successful route change */
    });

    /*
    Logs to console if a route change fails for any reason
    */
    $rootScope.$on('$stateChangeError', function (event, toState, toParams, fromState, fromParams, error) {
        console.log('state change error - ' + error + ' - to: ' + angular.toJson(toState) + ' params: ' + angular.toJson(toParams) + '\nfrom: ' + angular.toJson(fromState) + ' params: ' + angular.toJson(fromParams));
    });
});

Это, по крайней мере, даст вам некоторое представление о том, что происходит. Вы даже можете справиться с проблемой непосредственно внутри этих блоков

  • 0
    Привет, Инкогнос, спасибо за фрагмент, но он не дает мне никакой новой информации. Я только что обновил свою публикацию и добавил свой файл состояний.
  • 0
    правильно ли вводится $ state в конкретный контроллер? обычно выдает ошибку, если это не так. Когда вы вызываете $ state.go, запускается ли $ stateChangeStart? это работает в браузере? Вы упоминаете, что Express не выполняет перенаправление, но я предполагал, что это было угловое приложение с ui-router. пожалуйста, расширьте и дайте больше деталей
Показать ещё 4 комментария

Ещё вопросы

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