Javascript 如何使用ngRoute在templateUrl中使用URL参数?
我正在构建一个angularjs应用程序,我的app.js看起来像这样。但是,它抛出Javascript 如何使用ngRoute在templateUrl中使用URL参数?,javascript,angularjs,url-routing,ngroute,Javascript,Angularjs,Url Routing,Ngroute,我正在构建一个angularjs应用程序,我的app.js看起来像这样。但是,它抛出未知提供程序:$routeParams错误。知道为什么吗 var angularSite = angular.module('angularSite', [ 'ui.router', 'ngRoute', 'siteController', 'siteDirectives' ]) .config(['$routeProvider', '$routeParams', function($rout
未知提供程序:$routeParams
错误。知道为什么吗
var angularSite = angular.module('angularSite', [
'ui.router',
'ngRoute',
'siteController',
'siteDirectives'
])
.config(['$routeProvider', '$routeParams',
function($routeProvider,$routeParams) {
$routeProvider.
when('/Projects', {
templateUrl: 'partials/projects.html',
controller: 'ProjectController'
}).
when('/Projects/:projectId', {
template: 'partials/pages/'+$routeParams.projectId+'.html',
controller: 'ProjectDetailController'
}).
otherwise({
redirectTo: '/About'
});
}]);
AngularJS 1.2访问路由参数在配置级别提供替换
template: 'partials/pages/'+$routeParams.projectId+'.html',
与:
source-角度模块配置中不允许使用服务$routeParams是一项服务,因此您不能在那里使用它 我建议您通过控制器ProjectDetailController包含一个或另一个模板。 在此控制器中,您可以插入并使用服务$routeParams,以便选择一个或另一个模板。比如: 因此,您的配置:
when('/Projects/:projectId', {
template: 'partials/pages/main.html',
controller: 'ProjectDetailController'
}).
您的控制器:
Controller.$inject = ['$routeParams'];
/* @ngInject */
function Controller($routeParams) {
var vm = this;
vm.template = 'partials/pages/'+$routeParams.projectId+'.html';
}
以及main.html模板:
<ng-include src="vm.template"/>
是一项服务,可以不注入.config
如果要从URL参数设置templateUrl,正确的方法是使用函数设置templateUrl
(如下所示):
.when('/Projects/:projectId'){
templateUrl:function(params){//$routeParams是一个服务而不是一个提供者,您在配置方法中试图用它实现什么?文档:!我发现了这个,我相信它回答了您的问题。
<ng-include src="vm.template"/>
.when('/Projects/:projectId', {
templateUrl: function(params) { // <--
return 'partials/pages/' + params.projectId + '.html'
},
controller: 'ProjectDetailController'
})