如何访问AngularJs控制器中的路由参数

时间:2014-08-05 05:40:42

标签: javascript angularjs parameters

我有一个简单的角度示例,我无法获取URL中查询字符串的路径参数。我该怎么做?

控制器:

appRoot.controller('RegistrationController', ['$scope', '$resource', '$routeParams', function ($scope, $resource, $routeParams) {

if ($routeParams)
    debugger;


}]);

主要配置文件

var appRoot = angular.module('registrationApp', ['ngRoute', 'registration.directives', 'ngResource']);     //Define the main module + dependancies


//Sets up AngularJS module and routes and any other config objects
appRoot
.config(['$routeProvider', function ($routeProvider) {
    //Setup routes to load partial templates from server. TemplateUrl is the location for the server view (Razor .cshtml view) - Frigin amaze-balls
    $routeProvider
        .when('/registration/:inviteToken', { templateUrl: 'registration', controller: 'RegistrationController' })
        .otherwise({ redirectTo: '/home' });
}])
.controller('RootController', ['$scope', '$route', '$routeParams', '$location', function ($scope, $route, $routeParams, $location) {
    $scope.$on('$routeChangeSuccess', function (e, current, previous) {
        $scope.activeViewPath = $location.path();
    });
}]);

当我浏览类似http://example.org/registration/?inviteToken=2354234之类的东西时,路线参数总是一个空物体。我也试过http://example.org/registration#/?inviteToken=2354234

值得注意的一件事是http://example.org/registration是MVC控制器

有人可以帮我理解我做错了吗?

1 个答案:

答案 0 :(得分:0)

在您的配置中,您指定了这样的路线:

http://example.org/#/registration/2354234
(where $routeParams.inviteToken will be 2354234)

如果您想匹配此http://example.org/registration/?inviteToken=2354234之类的网址,则需要使用其他路线:

/registration/?inviteToken=:inviteToken

<子> 我不是你知道这一点,但你定义的路由是指之后的路径#,除非你正在使用(并且在客户端和在服务器端)&#34; HTML 5&#34;模式。