如何使用AngularJS将请求路由到子目录?

时间:2013-06-28 22:32:49

标签: angularjs angular-routing

我来自PHP MVC背景,我开始使用AngularJS。在PHP中我会做这样的事情来将用户引导到网站的不同部分:抓住网址,将其拆分,然后将用户发送到请求的网页。例如,如果用户输入www.mysite.com/info/product/1,则PHP会拆分此网址并说“好吧,使用'info'控制器。”然后,'info'控制器会说“好吧,使用产品控制器”。该控制器将执行其操作,然后将用户发送到请求的URL。

在角度我试图找出相当于此的东西。我见过这样的事情:

angular.module('phonecat', []).
config(['$routeProvider', function($routeProvider) {
$routeProvider.
  when('/phones', {templateUrl: 'partials/phone-list.html',   controller: PhoneListCtrl}).
  when('/phones/:phoneId', {templateUrl: 'partials/phone-detail.html', controller: PhoneDetailCtrl}).
  otherwise({redirectTo: '/phones'});
}]);

这是否意味着我必须以这种方式输入每个可能的URL?换句话说,我是否必须为www.mysite.com/phones/的子链接复制上述代码。像这样:

....
when('/phones',...).
when('/phones/:phoneId',...).
...

然后对其他目录执行相同操作(例如,www.mysite.com / computers /...)。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

看起来你正走在正确的道路上(双关语)。

在路由提供程序中,您基本上定义了对给定URL($ location)使用的视图和控制器。与路径本身一起,您可以包含与phoneId一起显示的参数。请记住服务器上的这些路径,这些只是有角度的应用程序使用的URL,用于跟踪它的历史记录并导航"深层链接"在复制链接时显示适当的视图。

如果您正在进行某种RESTful接口,其中PHP具有一些"目录结构"或URL表示数据模型是一个单独的问题。您可以通过使用AngularJS中的$ resource来处理它,我相信虽然我并不熟悉实际实现它。到目前为止,我已经在我定义的服务中使用$ http来处理我对服务器的调用,并且只是手动设置调用的文件,但对于大型复杂项目,REST接口可能是一个好主意,以避免所有的手工工作和潜在的错误。