我有一个非常简单的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
你有几个错误:
您已在两个位置指定了控制器,包括view(<div ng-controller="CompanyCtrl"></div>)和$ routeProvider(.when('/company/edit/:id', {templateUrl: '/partials/edit', controller: 'CompanyCtrl'}).我将删除视图中的那个.
在$ routeProvider中指定控制器时,你必须在模块中注册控制器(无论如何你应该真的这样做,最好避免使用全局控制器).做napp.controller('CompanyCtrl', function ...而不是var CompanyCtrl = function ....
当您使用$ 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
首先尝试这个
$locationProvider.html5Mode(true);
Run Code Online (Sandbox Code Playgroud)
这应该修复你的起始代码.然后调整代码以支持非pushState浏览器.
希望这可以帮助!