如何使用破折号而不是斜线创建AngularJS管线

如何使用破折号而不是斜线创建AngularJS管线,angularjs,routing,angular-routing,Angularjs,Routing,Angular Routing,是否可以在URL片段中使用破折号(而不是斜杠)和可变内容创建角度路由?例如: 在Angular phone教程中,URL如下所示,例如: 这是通过路由提供程序实现的,例如: when('/phones/:phoneId', { templateUrl: 'partials/phone-detail.html', controller: 'PhoneDetailCtrl' }) 我想做的是让URL看起来更像: {{manufacturer}}--{{devicename

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

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

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

  when('/phones/:phoneId', {
    templateUrl: 'partials/phone-detail.html',
    controller: 'PhoneDetailCtrl'
  })
我想做的是让URL看起来更像:

{{manufacturer}}--{{devicename}--{{phoneid}

其中{{phoneid}}是一个数字数据库键,{{{manufacturer}}文本将因电话而异。这是因为我需要数字键来驱动我的数据库,但出于搜索引擎优化的目的,我希望URL中包含制造商和设备名称文本(或我的等效文本)

实际上,我想在角度路由中做我在htaccess文件中可以做的事情,在这里我可以做如下事情: 重写规则^(.)--(.*)$phone.php?mfg=$1&devicename=$2&phoneid=$3


我知道角度路由不支持这样的通配符,但我想知道如何才能实现这样的效果。或者可能有一些扩展支持此功能?

您可以在url()中使用变量using:name

在您的配置中:

config(function($routeProvider, $locationProvider) {
    $routeProvider
    .when('/phones/:manufacturer--:devicename--:phoneid', {
          templateUrl: 'file.html',
          controller: 'PhoneController'
     });
要访问控制器中的参数,请执行以下操作:

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

天才。那很好用。没有意识到可以在url中放置多个变量。非常感谢。