2015-07-03 1 views
0

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

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

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

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

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

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

Вот мой express.js конфигурации:

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' 
          ] 
        }); 
       }] 
      } 
     }) 

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

Best, Patrick

ответ

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

Hey Incognos, спасибо за фрагмент, но он не дает мне никакой новой информации. Я только что обновил сообщение и добавил файл состояния. –

+0

- это состояние, которое правильно вводится в конкретный контроллер? обычно выдает ошибку, если это не так. Когда вы вызываете $ state.go, запускается $ stateChangeStart? это работает в браузере? вы говорите, что Express не выполняет перенаправление, но я предполагал, что это угловое приложение с ui-router. пожалуйста, развернитесь и дайте более подробную информацию. – Incognos

+0

Эй, @ Инкогно, да, состояние вводится. Как я уже сказал, все работает на nginx. Странное поведение возникает при использовании ExpressJS. $ stateChangeStart уволен: Object {name: "$ stateChangeStart", targetScope: Object, defaultPrevented: false, currentScope: Object} currentScope: nulldefaultPrevented: falsename: "$ stateChangeStart" preventDefault:() {arguments: (...) get arguments : ThrowTypeError() {[native code]} set arguments: ThrowTypeError() {[native code]} caller: (...) get caller: ThrowTypeError() {[native code]} set caller: ThrowTypeError() {[native code]} length: 0name: "" –