надеюсь, что некоторые из них столкнулись с моей проблемой раньше, это действительно странно. Я получаю странное поведение при использовании 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
Hey Incognos, спасибо за фрагмент, но он не дает мне никакой новой информации. Я только что обновил сообщение и добавил файл состояния. –
- это состояние, которое правильно вводится в конкретный контроллер? обычно выдает ошибку, если это не так. Когда вы вызываете $ state.go, запускается $ stateChangeStart? это работает в браузере? вы говорите, что Express не выполняет перенаправление, но я предполагал, что это угловое приложение с ui-router. пожалуйста, развернитесь и дайте более подробную информацию. – Incognos
Эй, @ Инкогно, да, состояние вводится. Как я уже сказал, все работает на 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: "" –