我正在开发AngularJS中的文件编辑应用程序。我的网址看起来像这样:
#/ fileName.md
或
#/文件夹/ fileName.md
或
#/文件夹/嵌套文件夹/另一个文件夹/ itgoesonforever / filename.MD
我不想为每一个深度做一条路线,它可能是~15条路线深。有没有办法有条件路线?粗暴地说:
/:fileorfolder?/:fileorfolder?/:fileorfolder?/:fileorfolder?
答案 0 :(得分:15)
我认为使用Angular可以做的最好的事情是*
,这是v1.1.5 of $routeProvider的新内容:
path
可以包含以星号(*name
)开头的命名组。当路线匹配时,所有字符都急切地存储在给定名称下的$routeParams
中 例如,/color/:color/largecode/*largecode/edit
等路线将匹配/color/brown/largecode/code/with/slashes/edit
并提取:
-color: brown
-largecode: code/with/slashes
你必须自己解析largecode
param。
答案 1 :(得分:6)
我想我明白了!诀窍是将模板设置为简单模板,然后修改范围以包含模板的动态路径。
现在我可以在/foo/bar/baz.html
放置一个文件,然后转到server.com/foo/bar/baz
查看呈现的模板。
// Routes
app.config( function($routeProvider) {
$routeProvider
// Home
.when( '/', {
templateUrl: 'home.html',
controller: 'HomeController'
})
// Catch All
.when( '/:templatePath*', {
template: '<ng-include src="templatePath"></ng-include>',
controller: 'CatchAllCtrl'
})
});
// Catch All Controller
app.controller("CatchAllCtrl", function($scope, $routeParams) {
$scope.templatePath = $routeParams.templatePath + '.html';
});
答案 2 :(得分:2)
您可以查看使用routeProvider#otherwise functions
$routeProvider
.otherwise({controller: 'FileEditor',...});