Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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 我可以通过API调用在AngularJS中动态创建路由吗?_Javascript_Angularjs - Fatal编程技术网

Javascript 我可以通过API调用在AngularJS中动态创建路由吗?

Javascript 我可以通过API调用在AngularJS中动态创建路由吗?,javascript,angularjs,Javascript,Angularjs,我正在学习AngularJS并假设这是可能的,那么根据API调用的结果动态创建路由的最佳方法是什么呢 我有一个返回文件夹数组的控制器: controllers.controller('FoldersCtrl', function($scope, $http) { $http.jsonp('https://api....=JSON_CALLBACK').then(function (shaggy){ $scope.list=shaggy.data; }); 我见过几个$routeP

我正在学习AngularJS并假设这是可能的,那么根据API调用的结果动态创建路由的最佳方法是什么呢

我有一个返回文件夹数组的控制器:

controllers.controller('FoldersCtrl', function($scope, $http) { 
  $http.jsonp('https://api....=JSON_CALLBACK').then(function (shaggy){
    $scope.list=shaggy.data;
});
我见过几个$routeProvider的示例,它们看起来像这样:

app.config(function ($routeProvider) {
  $routeProvider
  .when('/somePath', {controller:"SomePathCtrl", templateUrl: "partials/somePath.html" })
  .otherwise({redirectTo: "/homePath"})
});
app.config(function ($routeProvider) {
  $routeProvider
  .when({{shaggy.data.folder}}, {controller:"FolderCtrl", templateUrl: "partials/folder.html" })
  .otherwise({redirectTo: "/homePath"})
});
但我还没有遇到一个例子,其中“/somePath”是从API调用的结果派生出来的。我想这样做:

app.config(function ($routeProvider) {
  $routeProvider
  .when('/somePath', {controller:"SomePathCtrl", templateUrl: "partials/somePath.html" })
  .otherwise({redirectTo: "/homePath"})
});
app.config(function ($routeProvider) {
  $routeProvider
  .when({{shaggy.data.folder}}, {controller:"FolderCtrl", templateUrl: "partials/folder.html" })
  .otherwise({redirectTo: "/homePath"})
});
然后,理想情况下,FolderCtrl和partials/folder.html都将使用足够通用的代码填充,以显示每个文件夹中的对象,这样用户就可以知道我传递给路由的{{shaggy.data.folder}}。有什么想法吗

提前感谢。

$routeProvider只能在模块的config方法中配置,该方法将在该模块中运行,如服务或控制器

实现这一点的一种方法是使用全面覆盖路线:

$routeProvider.when('/:somePath*', ...)
并使用$routeParams来模拟这种行为

一个松散的理论例子:

.controller('RouteController', function($routeParams) {
  this.viewPath = $routeParams.showPath + '.html';  // or some way to map routes to views.
});

<div ng-controller="RouteController as routeCtrl">
  <div ng-include="{{routeCtrl.viewPath}}"></div>
</div>
这可能是一个答案?