我有一个嵌套的状态,它与目录中的文件路径相关联。也就是说,视图的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