0

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

符号。一旦数据从服务器返回,$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 文件和文件夹结构

在此处输入图像描述

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

ExpressJS 路由器

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

如果我从中删除/:permalink$routeProvider我就能得到回复。但我希望 url 是动态的

请让我知道这里有什么问题

4

1 回答 1

1

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

我认为你有几个选择:

  1. 选择不同的服务器端控制器名称。(即在 express app.get('/user/:permalink'...))
  2. 选择不同的客户端基本路由。(即在路由器'/user/:permalink'中)
  3. 将两者完全分开,因为当您拥有完全匹配的服务器路由和客户端路由时,这听起来像是在做坏事。客户端路由应该对用户复制/粘贴或书签有意义。服务器端路由对于您用作 API 应该是有意义的。他们似乎不太可能匹配。
于 2013-09-20T18:32:23.410 回答