angular $ routeprovider无尽的可选参数

时间:2015-11-25 06:46:33

标签: javascript angularjs angularjs-routing route-provider

我正在尝试创建文件&使用angular-js的文件夹管理器 所以我需要为folderIds提供无限的可选参数来处理这个:
example.com/drive/1/2/3/4/5/...

我们有这样的事情:

$routeprovider.when('/drive/[:folderId?]', {
    controller: 'driveCtrl',
    templateUrl: '/app/views/drive.html'
})

而不是:

$routeprovider.when('/drive/:folderId1?/:folderId2?/:folderId3?/:folderId4?', {
    controller: 'driveCtrl',
    templateUrl: '/app/views/drive.html'
})

1 个答案:

答案 0 :(得分:1)

如果您使用angular-ui-router,则可以定义自定义参数类型,如果您希望它包含斜杠,则为described here。您还可以看到this answer

例如:

$urlMatcherFactory.type("FolderType", {
  encode: function(val) { return val != null ? val.toString() : val; },
  decode: function(val) { return val != null ? val.toString() : val; },
  is: function(val) { return this.pattern.test(val); },
  pattern: /([^/]+\/?)+/ // this should catch /example.com/drive/1/2/3/4/5/ in one param
});

$stateProvider.state('drive', {
  url: '/drive/{folder:FolderType}',
  controller: 'driveCtrl',
  templateUrl: '/app/views/drive.html'
});