递归ui路由器嵌套视图

Eve*_*est 4 angularjs angular-ui-router

我正在尝试创建一个文件查看器,我想嵌套子目录.我正在使用ui-router,我希望每个子目录都有自己的URL和状态.

说我有以下结构:

Root
  |__Folder
  |__Folder
     |__SubFolder
        |__SubSubFolder
Run Code Online (Sandbox Code Playgroud)

我希望我的路线是:

files/:folderID/:SubFolderID/:SubSubFolderID
Run Code Online (Sandbox Code Playgroud)

我希望以递归方式执行此操作,而不是为每个子目录创建新状态

Rad*_*ler 5

我建议,用一个州一个参数来做- folderPath.因为ui-router应该尽快定义所有状态,以支持URL路由.所有这些独特的folderPath都可能不同,可能是动态的 - 在运行时,在应用程序生命周期中.

动态状态定义总是一个问题(如果状态在app.run()中定义,则可能发生用户来到url但尚未定义 - otherwise使用...坏的)

动态url参数 - 将始终有效.我们只需要在控制器中解析它并决定后续步骤.这是一个有效的例子.

国家及其参数可能是这样的

.state('files', {
      url: '/files/{folderPath:[a-zA-Z0-9/]*}',
      templateUrl: 'tpl.files.html',
      controller: 'FileCtrl'
    });
Run Code Online (Sandbox Code Playgroud)

稍后我们可以像这样动态生成导航(链接):

<a href="#/files/Folder1">
<a href="#/files/Folder1/SubFolder1/">
<a href="#/files/Folder1/SubFolder1/SubFolderA">
<a href="#/files/Folder1/SubFolder1/SubFolderB">
<a href="#/files/Folder1/SubFolder2/SubFolderX">
Run Code Online (Sandbox Code Playgroud)

在这个例子中检查一下