0

我来自 PHP MVC 背景,我开始使用 AngularJS。在 PHP 中,我会做这样的事情来将用户引导到网站的不同部分:获取 url,将其拆分,然后将用户发送到请求的页面。例如,如果用户输入 www.mysite.com/info/product/1,那么 PHP 会拆分这个 url 并说“好的,使用 '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'});
}]);

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

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

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

任何帮助将不胜感激。

4

1 回答 1

1

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

在路由提供者中,您基本上定义了将用于给定 URL($location)的视图和控制器。除了路径本身,您还可以包含使用 phoneId 显示的参数。请记住,这些不是服务器上的路径,这些只是 Angular 应用程序用来跟踪其历史记录并导航到“深度链接”以在复制链接时显示适当视图的 URL。

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

于 2013-06-28T23:27:00.257 回答