我不需要使用ngView
,但是我需要知道控制器中的路由参数。因此,我试图在控制器中注入$routeParams
。但是,在我在HTML中声明ngView
的情况下,此方法不起作用。那么,为什么配置$routeProvider
需要在HTML中声明一个ngView
(实际上我的要求并不需要)?
代码示例:
角度应用
var routeParamsApp = angular.module('routeParamsApp', ['ngRoute']);
配置文件
routeParamsApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/', {controller: 'routeParamsCntrl'}).
when('/a', {controller: 'routeParamsCntrl'}).
when('/a/:b', {controller: 'routeParamsCntrl'}).
when('a/:b/c/d/:e', {controller: 'routeParamsCntrl'}).
otherwise({redirectTo: '/'});
}]);
的HTML
<body ng-app="routeParamsApp" ng-controller="routeParamsCntrl">
<p>Current $routeParams is: {{routeParams}}</p>
</body>
控制者
routeParamsApp.controller('routeParamsCntrl', ['$scope', '$routeParams',
function($scope, $routeParams) {
$scope.routeParams = $routeParams;
}]
);
在我在HTML中声明虚拟
<div ng-view></div>
之前,上面的代码不起作用。为什么?有没有在不声明$routeParams
的情况下在控制器内使用ngView
的解决方案? 最佳答案
指令ng-view
用作在视图之间切换的容器。我认为它告诉AngularJS对模板进行摘要循环(即在开始时也对其进行编译)。
从Docs:
ngView是一种指令,它通过将当前路线的渲染模板包含到主布局(index.html)文件中来补充$ route服务。每次当前路由更改时,包含的视图都会根据$ route服务的配置随之更改。
需要安装ngRoute模块。
所以我们去$route
:Docs:
...
您可以通过$ routeProvider的API定义路由。
$ route服务通常与ngView指令和$ routeParams服务结合使用。