如何通过$ stateProvider在AngulrJs中传递参数?

时间:2017-03-01 10:23:32

标签: javascript angularjs angular-ui-router

我想将一个id参数从URL传递给控制器​​。

这是我的配置文件

$stateProvider.state('main.edit_tutor', {
        url : '/home/edit/:id', // here I want to pass Id
        views:{
            "header":{ templateUrl : 'templates/header.html',
                    controller : 'HeaderController',
            },
            "sidebar":{ templateUrl : 'templates/sidebar.html',
                        controller:'SidebarController',
            },
            "main":{ templateUrl : 'templates/editTutor.html',
                    controller:'TutorEditController',
            },
            "footer":{ templateUrl : 'templates/footer.html',
            },

        }
      })

我希望TutorEditController

中的id参数
    app.controller('TutorEditController', function($scope, $rootScope, $stateParams, $state, LoginService,FetchService,UtilityService,$filter,UpdateService,$routeParams) { 

    $scope.id = $routeParams.id;

});

我试过像这样传递id

http://localhost/tutor_crm/#/main/home/edit?id=4
http://localhost/tutor_crm/#/main/home/edit/id=4
http://localhost/tutor_crm/#/main/home/edit/4

我收到的错误如Error: [$injector:unpr]

1 个答案:

答案 0 :(得分:1)

错误是因为您正在为[{1}}注入routeParams,但您使用了ngRoute

由于您使用的是angular-ui-router,因此您应使用 angular-ui-router 而非 $stateParams

$routeParams

网址应为,

<强> app.controller('TutorEditController', function($scope, $rootScope, $stateParams, $state, LoginService,FetchService,UtilityService,$filter,UpdateService) { $scope.id = $stateParams.id; });