Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使angular.js路由通过长路径_Javascript_Web Applications_Angularjs - Fatal编程技术网

Javascript 如何使angular.js路由通过长路径

Javascript 如何使angular.js路由通过长路径,javascript,web-applications,angularjs,Javascript,Web Applications,Angularjs,我正在用angular.js制作一个文件浏览器。 因此,我将处理一些长url 例如: mydomain/folder1/sub1/grand-sub1/。// 我只是学习了angular,发现angular有$routeProvider,但是,似乎我应该写很多“何时”来实现这一点(如果我不定义“何时”),模板将不会使用) 角度支持“*”使所有子目录的路径使用相同的模板吗 或者,是否有其他方法来处理此问题?Thx.由于$routeProvider目前不支持通配符(以及答案中的2个链接),您必须对其

我正在用angular.js制作一个文件浏览器。 因此,我将处理一些长url

例如:

mydomain/folder1/sub1/grand-sub1/。//

我只是学习了angular,发现angular有$routeProvider,但是,似乎我应该写很多“何时”来实现这一点(如果我不定义“何时”),模板将不会使用)

角度支持“*”使所有子目录的路径使用相同的模板吗


或者,是否有其他方法来处理此问题?Thx.

由于$routeProvider目前不支持通配符(以及答案中的2个链接),您必须对其进行一些修改

HTML


别再说了

var dirRoute = {templateUrl: 'dir.html', controller: 'DirCtrl'};

$routeProvider
  .when('/', {templateUrl: 'home.html', controller: 'HomeCtrl'})
  .when('/dir', dirRoute)
  .when('/dir/:p1', dirRoute)
  .when('/dir/:p1/:p2', dirRoute)
  .when('/dir/:p1/:p2/:p3', dirRoute)
  .when('/dir/:p1/:p2/:p3/:p4', dirRoute)
  .when('/dir/:p1/:p2/:p3/:p4/:p5', dirRoute)
从AngularJS 1.2开始(目前处于候选发布阶段),您可以使用通配符匹配更多路径。从:

路径
可以包含以冒号开头、以星形结尾的命名组(
:name*
)。当路由匹配时,所有字符都急切地存储在给定名称下的
$routeParams

例如,像
/color/:color/largecode/:largecode*\/edit
这样的路由将匹配
/color/brown/largecode/code/with/slashs/edit
,并提取:

color: brown
largecode: code/with/slashs.
现在,您必须包含额外的
angular route.js
文件,因为默认情况下不再包含路由层以保存文件大小,这是毫无意义的。此外,您的模块必须将
ngRoute
声明为其依赖项之一。您的代码如下所示:

var app = angular.module('app', ['ngRoute']);

app.controller('HomeCtrl', function ($scope, $route) {
});

app.controller('DirCtrl', function ($scope, $routeParams) {
  $scope.path = '/' + $routeParams.dir;
});

app.config(function ($routeProvider) {
  $routeProvider
    .when('/', {templateUrl: 'home.html', controller: 'HomeCtrl'})
    .when('/dir/:dir*', {templateUrl: 'dir.html', controller: 'DirCtrl'})
    .otherwise({redirectTo: '/'});
});

工作示例:

看来这是我唯一能做的事情。非常感谢你的回答。
color: brown
largecode: code/with/slashs.
var app = angular.module('app', ['ngRoute']);

app.controller('HomeCtrl', function ($scope, $route) {
});

app.controller('DirCtrl', function ($scope, $routeParams) {
  $scope.path = '/' + $routeParams.dir;
});

app.config(function ($routeProvider) {
  $routeProvider
    .when('/', {templateUrl: 'home.html', controller: 'HomeCtrl'})
    .when('/dir/:dir*', {templateUrl: 'dir.html', controller: 'DirCtrl'})
    .otherwise({redirectTo: '/'});
});