浏览器通过角度路由触发SPA内的重新加载

时间:2014-10-12 21:21:29

标签: javascript angularjs angularjs-routing

我有节点服务的角度SPA,但每当我刷新/重新加载非根页面时,基于快速的服务器拦截路由并返回“不能GET route_X”。我的路由中缺少哪些功能来启用此刷新行为?

angular.module('appRoutes', []).config(['$routeProvider', '$locationProvider',
  function($routeProvider, $locationProvider) {

    $routeProvider

    .when('/', {
        templateUrl: 'views/nests.html',
        controller: 'NestController'

    .when('/pair/:id', {
        templateUrl: 'views/pairing.html',
        controller: 'PairController'
    })

    .when('/pairs', {
        templateUrl: 'views/pairs.html',
        controller: 'PairListController'
    });

    $locationProvider.html5Mode(true);

  }
]);

我在快递服务器中定义的唯一路线如下......

app.get('/', function(req, res) {
  var html = fs.readFileSync('public/views/index.html', 'utf8');
  res.send(html);
});

所有其他路由功能都存在于索引文件中。

1 个答案:

答案 0 :(得分:2)

您必须将所有请求(期望您的静态请求)路由到index.html:

app.use("/js", express.static(__dirname + "/public/js"));
...

app.all('/*', function(req, res) {
  var html = fs.readFileSync('public/views/index.html', 'utf8');
  res.send(html);
});