我想将'/ 路由定义为'*',因为我正在使用 $ 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 因为它始终将索引模板作为数据发送。
答案 0 :(得分:1)
将带有星号的控制器放在最后:
router.get('/test', function(req, res) {
res.json({go : 'Welcome to the test page.'});
});
router.get('*', function(req, res) {
res.render('./index');
});
或其他控制器永远不会被调用。