路由为星号时未收到正确的数据*

时间:2017-04-24 13:17:38

标签: node.js angular

我想将'/ 路由定义为'*',因为我正在使用 $ locationProvider.html5Mode(true); 角。

通过将我的主要路线定义为星号,我的网站会在刷新时保持其状态。否则,如果我正在刷新,则会出现“CAN NOT GET”错误。在 / login 页面上。

但是当我将主路线定义为星号时,它无法从服务器接收正确的数据。

获取'*'

router.get('*', function(req, res) {
  res.render('./index');
});

router.get('/test', function(req, res) {
  res.json({go : 'Welcome to the test page.'});
});

给出:

Object { data: "<!DOCTYPE html> <html lang="en" ng-…", status: 200, headers: wd/<(), config: Object, statusText: "OK" }

^这是整个索引模板。

获取'/'

router.get('/', function(req, res) {
  res.render('./index');
});

router.get('/test', function(req, res) {
  res.json({go : 'Welcome to the test page.'});
});

给出

Object { data: "test", status: 200, headers: wd/<(), config: Object, statusText: "OK" }

Angular

中调用具有此功能的按钮
my.test = function() {
      $http.get('/test')
        .then(handleSuccess)
        .catch(handleError);

        function handleSuccess(response) {
          console.log(response);
        }
        function handleError(error) {
          console.log(error);
        }
    }

另外:当我使用星号时,如果我在Angular中执行api调用,则无关紧要。 / sdkjfkwjfk 因为它始终将索引模板作为数据发送。

1 个答案:

答案 0 :(得分:1)

将带有星号的控制器放在最后:

router.get('/test', function(req, res) {
  res.json({go : 'Welcome to the test page.'});
});

router.get('*', function(req, res) {
  res.render('./index');
});

或其他控制器永远不会被调用。