angularjs - 如何使用破折号而不是斜杠创建 AngularJS 路由

标签 angularjs routes angular-routing

是否可以使用破折号(而不是斜杠)创建 Angular 路由,并在 URL 片段中创建可变内容?例如:

在 Angular 手机教程中,URL 如下所示,例如:

http://angular.github.io/angular-phonecat/step-11/app/#/phones/motorola-xoom

这是通过路由提供者实现的,例如:

  when('/phones/:phoneId', {
    templateUrl: 'partials/phone-detail.html',
    controller: 'PhoneDetailCtrl'
  })

我想做的是让 URL 看起来更像:

http://angular.github.io/angular-phonecat/step-11/app/#/phones/ {{制造商}}--{{devicename}}--{{phoneid}}

其中 {{phoneid}} 是数字数据库 key ,而 {{manufacturer}} 文本因手机而异。这是因为我需要数字键来驱动我的数据库,但希望 URL 中包含制造商和设备名称文本(或我的等效文本)以用于 seo 目的......

实际上,我想在 Angular Routes 中做我可以在 htaccess 文件中做的事情,我会在其中做类似的事情: RewriteRule ^(.)--by--(.)--(.*)$phone.php?mfg=$1&devicename=$2&phoneid=$3

我知道 Angular 路由不支持这样的通配符,但想知道如何才能实现类似这样的效果。或者也许有一些扩展可以实现这一点?

最佳答案

您可以在网址中使用 :name 来使用变量 ( source )

在您的配置中:

config(function($routeProvider, $locationProvider) {
    $routeProvider
    .when('/phones/:manufacturer--:devicename--:phoneid', {
          templateUrl: 'file.html',
          controller: 'PhoneController'
     });

要访问 Controller 中的参数:

$routeParams.manufacturer
$routeParams.devicename
$routeParams.phoneid

关于angularjs - 如何使用破折号而不是斜杠创建 AngularJS 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26350772/

相关文章:

javascript - Angularjs - 使用 $anchorScroll 后需要单击后退按钮两次

c# - MVC3 路由 - 删除参数

angular - 使用 NgRx 加载子路由

javascript - Angular $routeParams : get query parameter as array

javascript - 我想在单击清除链接时使用 javascript 中的拼接来删除整个列表

angularjs - $tooltipProvider 在 Angular 1.4.7+ 时出现错误

c# - 如何根据对照查找表检查的 url 调用 ASP.Net MVC?

ruby-on-rails - Ruby on Rails 路由的奇怪行为

Angular - 获取当前激活的路由并使用不同的路由参数重新导航到同一页面

angularjs - 依赖项是否共享?