2015-10-14 62 views
0

我无法从我的控制器访问$ routeParams值。

我的角度应用定义如下;

(function() { 
    'use strict'; 

    var app = angular.module("rbApp", [ 
     "ngAnimate", "ui.router", "ui.bootstrap", "ngMessages", "ngRoute", "common.services" ]); 

    app.config(["$stateProvider", "$urlRouterProvider", "$locationProvider", "$urlMatcherFactoryProvider", function ($stateProvider, $urlRouterProvider, $locationProvider, $urlMatcherFactoryProvider) { 
     $urlMatcherFactoryProvider.caseInsensitive(true); 
     $urlMatcherFactoryProvider.strictMode(false); 
     $urlRouterProvider.otherwise("/"); 

     $stateProvider 
     .state("confirmemail", { 
      url: "/Confirm_Email?userId", 
      templateUrl: "ceForm.html", 
      controller: "ceController as ceVm" 
     }); 
    }]); 
})(); 

我的控制器是;

(function() { 
    "use strict"; 

    angular 
     .module("common.services") 
     .controller("ceController", ["$scope", "$state", "$routeParams", "pageContentService", "accountService", "sharedServices", ceController]); 

    function ceController($scope, $state, $routeParams, pageContentService, accountService, sharedServices) { 
     var vm = this; 
     vm.emailConfirmed = false; 

     console.log("confirmEmail userId: ", $routeParams.userId); 

     if ($routeParams.userId) { 
      . 
      . 
      . 
     } 

    }; 
})(); 

但是当我在URL传似http://example.com?userId=9daa2c41$ routeParams.userId永远是不确定的。

+4

您正在使用ui路由器,因此正确的提供程序是'$ stateParams'。 '$ routeParams'属于'ngRoute'模块。我不会推荐混合两个 – Phil

+0

谢谢@Phil,解决了我的问题。 –

回答

0

您必须在<ng-view>中加载您的视图才能获得$routeParams。由于$routeParams$route相关联,因此在未使用路由时它不具有值。如果你要去那条路线,同样的事情适用于你的$stateParams