根据$ routeProvider配置构造URL

时间:2013-05-24 05:28:26

标签: angularjs

在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吗?

2 个答案:

答案 0 :(得分:1)

“裸角”无法实现这一点,因为Angular只识别您尝试访问的网址。

但是,Angular-UI's Router允许您跳转到某个状态,从而根据州名更改网址。

答案 1 :(得分:0)

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

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

   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中,它重定向到帐户 - >控制器和登录 - >行动。

或者您可以设置为静态tempalte,如templateUrl: 'views/user_login.htm'

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