Angular $ routeParams为空

wes*_*bos 15 angularjs

我有一个非常简单的Angular应用程序,我已经提炼到以下内容:

var napp = angular.module('Napp',['ngResource']);

var CompanyCtrl = function($scope, $routeParams, $location, $resource) {
    console.log($routeParams);
};


napp.config(['$routeProvider', function($routeProvider) {
    $routeProvider
    .when('/company/edit/:id', 
      {templateUrl: '/partials/edit', controller: 'CompanyCtrl'}
    );
}]);
Run Code Online (Sandbox Code Playgroud)

和HTML:

<div ng-controller="CompanyCtrl"></div>
Run Code Online (Sandbox Code Playgroud)

当我记录$ routeParams时,它出现空白.当我使用.otherwise()时,它将加载我在那里指定的任何内容.知道我错过了什么吗?

joa*_*mbl 10

你有几个错误:

  1. 您已在两个位置指定了控制器,包括view(<div ng-controller="CompanyCtrl"></div>)和$ routeProvider(.when('/company/edit/:id', {templateUrl: '/partials/edit', controller: 'CompanyCtrl'}).我将删除视图中的那个.

  2. 在$ routeProvider中指定控制器时,你必须在模块中注册控制器(无论如何你应该真的这样做,最好避免使用全局控制器).做napp.controller('CompanyCtrl', function ...而不是var CompanyCtrl = function ....

  3. 当您使用$ route服务时,您需要指定ng-view(不确定您是否这样做)

新代码:

var napp = angular.module('Napp', ['ngResource']);

napp.controller('CompanyCtrl', function ($scope, $routeParams, $location, $resource) {
  console.log($routeParams);
});

napp.config(['$routeProvider', function ($routeProvider) {
  $routeProvider
    .when('/company/edit/:id',
      {templateUrl: '/partials/edit', controller: 'CompanyCtrl'}
    );
}]);
Run Code Online (Sandbox Code Playgroud)

模板(/ parials/edit)

<div> ... </div>
Run Code Online (Sandbox Code Playgroud)

和应用程序(index.html或其他东西)

... <body> <div ng-view></div> </body>
Run Code Online (Sandbox Code Playgroud)

我创建了一个有效的插件示例:http://plnkr.co/edit/PQXke2d1IEJfh2BKNE23?p = preview


vla*_*off 9

首先尝试这个

$locationProvider.html5Mode(true);
Run Code Online (Sandbox Code Playgroud)

这应该修复你的起始代码.然后调整代码以支持非pushState浏览器.

希望这可以帮助!

  • 如何以及在何处使用它? (4认同)