Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.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 使用AngularJS动态更改路由_Javascript_Angularjs_Json_Angular Ui Router - Fatal编程技术网

Javascript 使用AngularJS动态更改路由

Javascript 使用AngularJS动态更改路由,javascript,angularjs,json,angular-ui-router,Javascript,Angularjs,Json,Angular Ui Router,我的项目中有很多JSON模型,我需要根据用户的操作显示不同的模型 以下是角路由器代码: app.config(['$routeProvider', function($routeProvider) { $routeProvider .when('/', { templateUrl: 'views/home.html', controller: 'HomeCtrl' }).when('/doc/:section, {

我的项目中有很多JSON模型,我需要根据用户的操作显示不同的模型

以下是角路由器代码:

app.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider
      .when('/', {
        templateUrl: 'views/home.html',
        controller: 'HomeCtrl'
      }).when('/doc/:section, {
        templateUrl: 'views/doc.html',
        controller: 'DocCtrl'
      })
      .otherwise({
        redirectTo: '/'
      });
  }]);
下面是DocCtrl.js文件:

app.controller('DocCtrl', ['$scope', '$http', 'JSONModelsService',
    function ($scope, $http, JSONModelsService) {

        var formData = {};

        $scope.group = {};
        $scope.sections = [];

        JSONModelsService.get([section])
            .then(function (response) {
                console.log(response);
                $scope.group = response.data.groups[0];

                $scope.sections = $scope.group.sections;
            });

    }]);

我基本上需要使
部分
动态化,以便在视图中显示不同的模型。然而,我不知道我该怎么做。我只有一个名为
JSONModels
的文件夹,其中包含多个json文件。

如果我正确理解您的问题,您的目标是用实际的节标识符替换代码的
[section]
部分

当用户访问您的
/doc/:section
路线时,例如
/doc/my doc
,您可以通过将
$routeParams
服务注入控制器来访问
:section
部分

app.controller('DocCtrl'、['$scope'、'$http'、'$routeParams'、'jsonModelService',
函数($scope、$http、$routeParams、JSONModelService){
...
使用
$routeParams
服务,您可以访问您的路线参数。因此,您可以通过读取
$routeParams.section
来简单地访问
:section
参数

(我认为你正在努力实现的)一个完整的例子:

app.controller('DocCtrl'、['$scope'、'$http'、'$routeParams'、'jsonModelService',
函数($scope、$http、$routeParams、JSONModelService){
var formData={};
$scope.group={};
$scope.sections=[];
JsonModelService.get([$routeParams.section])
.然后(功能(响应){
控制台日志(响应);
$scope.group=response.data.groups[0];
$scope.sections=$scope.group.sections;
});
}]);
如果您想了解更多信息,请查看角度教程的步骤7: