AngularJS动态路由问题

时间:2013-09-20 14:02:08

标签: angularjs express

我正在尝试使用动态路由显示视图。为此我使用 “:”

符号。数据从服务器返回后,$location.path('/postuser/'+permalink)用于重定向到视图。但由于某种原因,我收到404错误。

我使用的是Html 5模式。我认为这是问题。

$location.path('/postuser/'+permalink)向服务器发送请求:

  

http://www.learntest/partials/userspostpage.html

而不是

  

http://www.learntest/postuser/somedata

以下是路由器示例

test.config(['$routeProvider', function($routeProvider) {

$routeProvider.when('/welcome', {templateUrl: 'partials/welcome.html', controller: 'welcomeController'});

$routeProvider.when('/login', {templateUrl: 'partials/login.html', controller: 'singupController'});
$routeProvider.when('/signup', {templateUrl: 'partials/signup.html', controller: 'singupController'});
$routeProvider.when('/', {templateUrl: 'partials/home.html', controller: 'homeController'});
$routeProvider.when('/create', {templateUrl: 'partials/new.html', controller: 'CrudController'});
$routeProvider.when('/user/:permalink', {templateUrl: 'partials/userspostpage.html', controller: 'CrudController'});

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

}]);

 test.config(['$locationProvider', function($locationProvider) {
$locationProvider.html5Mode(true);

}]);

AngularJS文件和文件夹结构

enter image description here

同样在后端我正在使用ExpressJS路由器

ExpressJS路由器

app.get("/postuser/:permalink", daataN);

如果我从/:permalink移除$routeProvider,我就能收到回复。但我希望网址是动态的

请告诉我这里的问题

1 个答案:

答案 0 :(得分:1)

我的猜测,因为你说你正在使用html5mode是服务器在客户端获得机会之前处理路由,因此你总是会在角度路由器有机会处理之前在服务器上触发GET操作请求。

我认为你有几个选择:

  1. 选择其他服务器端控制器名称。 (即在快递app.get('/ user /:permalink'...))
  2. 选择其他客户端基本路由。 (即路由器'/ user /:permalink')
  3. 两者完全不同,因为当您拥有完全匹配的服务器路由和客户端路由时,听起来好像做得不好。客户端路由应该对用户有意义进行复制/粘贴或书签。服务器端路由应该有意义,您可以用作API。他们似乎不太可能匹配。