1

在 angular.js 中,是否有基于已指定的 $routeProvider 构建 URL 的内置方法?

像 Rails 的 url_for:

url_for(:action => 'login', :controller => 'account')

或 ASP.NET MVC 的 Url.Action / Url.RouteUrl:

Url.RouteUrl(new { controller = "account", action = "login" })

还是我应该手动构建 URL?

4

2 回答 2

1

这对于“裸角”是不可能的,因为 Angular 只识别您尝试访问的 URL。

但是,Angular-UI 的路由器允许您跳转到某个状态,从而根据状态的名称更改 url。

于 2013-05-24T06:49:14.307 回答
0

在 Angular 应用程序中,当您单击 href 路径为http://localhost/account/login/. 然后 Angular 介入,而不是让您的浏览器从服务器请求页面,它拦截您的点击事件并转到您的 routeProvider 以查看要显示的客户端视图。这就是为什么您的链接只要您尝试不直接打开它们就可以工作。

您可以为这个 href 路径配置 routeProvider http://localhost/account/login/,角度如下所示。

   app.config(['$routeProvider', function($routeProvider) {
    $routeProvider.
        when('account/login', {templateUrl: 'account/login', controller: 'AccountController'}).
        when('/users', {templateUrl: 'account/users', controller: 'UsersController'}).
        otherwise({redirectTo: '/'});
    }]);

在这

when('account/login', {templateUrl: 'account/login', controller: 'AccountController'}).

templateUrl, templateUrl: 'account/login', 在 ASP.NET MVC 中,它重定向到 account -> Controller 和 login -> Action。

或者您可以像这样设置为静态模板templateUrl: 'views/user_login.htm'

控制器,controller: 'AccountController'只不过是 AngularJS 控制器。

于 2013-05-24T06:44:33.740 回答