AngularJS动态路由问题

AngularJS动态路由问题,angularjs,express,Angularjs,Express,我正在尝试使用动态布线显示视图。为此,我使用了:“ 符号。一旦数据从服务器返回,$location.path('/postaser/'+permalink)用于重定向到视图。但由于某种原因,我得到了404错误 我正在使用HTML5模式。我认为这就是问题所在。 $location.path('/postaser/'+permalink)向服务器发送请求: 而不是这个 这是路由器示例 test.config(['$routeProvider',函数($routeProvider){ $route

我正在尝试使用动态布线显示视图。为此,我使用了:“

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

我正在使用HTML5模式。我认为这就是问题所在。

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

而不是这个

这是路由器示例

test.config(['$routeProvider',函数($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。否则({重定向到:'/'});
}]))

}]))

AngularJS文件和文件夹结构

在后端,我也在使用ExpressJS路由器

ExpressJS路由器

app.get("/postuser/:permalink", daataN);
如果我从
$routeProvider
中删除
/:permalink
,我就能够得到响应。但我希望url是动态的


请让我知道这里的问题是什么

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

我认为你有几个选择:

  • 选择其他服务器端控制器名称。(即在express应用程序中获取('/user/:permalink'…))
  • 选择不同的客户端基本路由。(即在路由器“/user/:permalink”中)
  • 将两者完全分开,因为当您有一个完全匹配的服务器路由和一个客户机路由时,听起来好像您在做坏事。客户端路由对于用户复制/粘贴或添加书签是有意义的。服务器端路由对于您作为API使用应该是有意义的。他们似乎不太可能匹配

  • 我不理解你的评论,daataN是返回json数据的函数。你使用html5mode和angular吗?是的,我使用html5mode。伙计们帮我,我很清楚,服务器在客户端得到机会之前正在处理路由。关键是整个路由需要更改,而不是通配符定义的位置。您的路由器需要完全不同,即“/user/:permalink”与“/postser/:permalink”相对。看到区别了吗?更改了路由$location.path(“/user/”+data.permalink)。但我得到以下错误:GET 404(未找到)angular.min.js:99$GET.id angular.min.js:99 n angular.min.js:95 l angular.min.js:94$GET.l.(匿名函数)angular.min.js:96(匿名函数)angular.min.js:82 j.promise.then.h angular.min.js:78 j.promise.h angular.min.js:78(匿名函数)angular.min.js:78$get.e.$eval angular.min.js:88$get.e.$digest angular.min.js:86$get.e.$apply angular.min.js:88 e angular.min.js:95 p angular.min.js:98请用路由器的当前状态以及模板的位置等更新您的原始帖子。我已经添加了路由器的当前状态和模板的位置
    app.get("/postuser/:permalink", daataN);