在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吗?
答案 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控制器。