Angular UI Router解析包含斜杠作为状态一部分的URL



我有一个嵌套的状态,它与目录中的文件路径相关联。也就是说,视图的url类似于/workspace/path/to/my/file.txt。现在,简单地使用/:path是行不通的。如何将ui-router配置为接受路由中间的斜杠?

angular.module('myApp')
  .config(function ($stateProvider) {
    $stateProvider
      .state('workspace.file', {
        url: '/:path',
        parent: 'workspace',
        views: {
          fileTabs: {
            templateUrl: 'app/workspace/workspace.file/file.html',
          }
        },
        controller: 'WorkspaceFileCtrl'
      });
  });

有一个类似的Q&A: -递归ui路由器嵌套视图

因此,我们可以使用更精确的正则表达式def:

.state('workspace.file', {
      url: '/files/{folderPath:[a-zA-Z0-9/.]*}',
      templateUrl: 'tpl.files.html',
      controller: 'FileCtrl'
    });

下面是一个示例的plunker

您必须使用正则表达式进行匹配:

 url: '/{path:.*}' 

或者他们的快捷方式包罗万象的语法:

url: '/*path'

https://github.com/angular-ui/ui-router/wiki/URL-Routing

最新更新