angularjs 如果我使用nodejs和angular.js,我可以Map/status和/status/:id吗?

kuarbcqp  于 8个月前  发布在  Angular
关注(0)|答案(1)|浏览(94)

我在路由/status和/status/:id时遇到了一些问题。我收到“无法获取/状态”错误消息
在angular中,我写道:

App.config(['$routeProvider', '$locationProvider', function($routeProvider,$locationProvider){
    $routeProvider.when('/status', {
        templateUrl:    'views/statusList',
        controller:     'dailyStatusCtrl'
    });
    $routeProvider.when('/status/:oldDate', {
        templateUrl:    'views/statusList',
        controller:     'dailyStatusCtrl'
    });
    $routeProvider.otherwise({redirectTo: '/'});
    $locationProvider.html5Mode(true).hashPrefix('!');
}]);

在nodejs方面,我使用jade并写道:

server.use(connRoute(function(router){
    router.get('/', function (req, res, next){
      console.log('/ router');
      res.render('index');
    });
    router.get('/views/:view', function(req, res){
        res.render(req.params.view)
    });
    router.get('status/:id', function (req, res, next){
        console.log('status * router');
        res.render('index');
    });
    router.get('*', function (req, res, next){
        console.log('** router');
        res.render('index');
    });
}));

/status/:id的部分是一个测试。但没有用。我得到了信息:“无法为“/status”获取/status”,但它适用于“/status/somecontent”。
我的代码有什么问题?如何使用/status和/status/:id?
如果没有第二个路由器,我会得到“cannot get /status/somecontent”,但它可以为/status工作。
谢谢

编辑1:

我在node中编辑了路由,以:

server.use(connRoute(function(router){
    router.get('/', function (req, res, next){
      res.render('index');
    });
    router.get('/views/:view', function(req, res, next){
        res.render(req.params.view)
    });
}));

并添加connect-modrewrite:

server.use(modRewrite([
    '^([^.]+)$ /index.html [L]'
]));

但重写规则是错误的。我无法重新加载仅主页(/)。任何其他页面都无法重新加载。还是顺序有问题?
这是真正的命令:

server.use(connRoute(function(router){
    router.get('/', function (req, res, next){
      res.render('index');
    });
    router.get('/views/:view', function(req, res, next){
        res.render(req.params.view)
    });
}));

server.use(modRewrite([
    '^([^.]+)$ /index.html [L]'
]));

server.use(servStatic(__dirname + '/../logbook'));

任何想法的权利modRewrite规则?

fiei3ece

fiei3ece1#

如果没有modrewrite,它可以工作,如果你为每个url都有一个路由器条目。不要忘记使用“function(req,res,next)"。

server.use(connRoute(function(router){
    router.get('/', function (req, res, next){
      res.render('index');
    });
    router.get('/status', function (req, res, next){
      res.render('index');
    });
    router.get('/status/:olddate', function (req, res, next){
      res.render('index');
    });
    router.get('/views/:view', function(req, res, next){
        res.render(req.params.view)
    });
}));

相关问题