Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

HTML5Mode e Refresh da página.

Olá galera.

Uma dúvida que já me fez perder 2 dias de pesquisa e não acho a solução. Fiz o curso de AngularJS e nele o express.js e o main.js estão assim:

express.js

var express = require('express')
    ,app = express()
    ,bodyParser = require('body-parser')
    ,routes = require('../app/routes');

app.use(express.static('./public'));
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());

routes(app);

module.exports = app;

main.js

angular.module("alurapic", ['minhasDiretivas', 'ngAnimate', 'ngRoute', 'meusServicos'])
.config(function($routeProvider, $locationProvider){

    $locationProvider.html5Mode(true);

    $routeProvider.when('/fotos', {
        templateUrl: 'partials/principal.html',
        controller: 'FotosController'
    });

    $routeProvider.when('/fotos/new', {
        templateUrl: 'partials/foto.html',
        controller: 'FotoController'
    });

    $routeProvider.when('/fotos/edit/:fotoId', {
        templateUrl: 'partials/foto.html',
        controller: 'FotoController'
    });

    $routeProvider.otherwise({redirectTo: '/fotos'});
});

E a aplicação alurapic atualiza a página normalmente após pressionar F5.

Eu estou criando uma aplicação igual implementando todos os scripts sozinho para testar os conhecimentos e no meu caso o express e o main js estão assim:

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

app.use(express.static('./public'));
module.exports = app;
angular.module('ouvidoria', ['ngRoute'])
    .config(function($routeProvider, $locationProvider) {

        $locationProvider.html5Mode(true);
        //$httpProvider.interceptors.push('tokenInterceptor');
        $routeProvider.when('/login', {
            templateUrl: 'partials/login.html',
            controller: 'LoginController'
        });

        $routeProvider.otherwise({
            redirectTo: '/login'
        });

    });

Mas ao pressionar F5 recebo: Cannot GET /login

E no console: 404 (Not Found)

Eu sei que é por causa do html5mode que quando ativado ele reescreve as urls. Mas não consegui achar a solução. Alguém sabe por que isso acontece?

3 respostas

Experimentou desativar htnl5mode? Para ele funcionar você precisa alterar seu Server. Gmail até hoje usa #.

solução!

Você pode pegar carona nesse código

http://www.seankenny.me/blog/2013/08/05/angularjs-in-html5-mode-with-expressjs/

Estou no smartphone e escrever código é complicado.

Olá Flávio!

Sim, com o html5mode desativado sempre funcionou. Eu queria mesmo era fazer funcionar com html5mode ativado. Mas com suas repostas eu entendi o motivo de não funcionar.

Obrigado.