Angularjs 在角度路由中传递变量名
目前,我可以使用以下代码在AngularJs中添加路由机制:Angularjs 在角度路由中传递变量名,angularjs,angular-routing,ngroute,Angularjs,Angular Routing,Ngroute,目前,我可以使用以下代码在AngularJs中添加路由机制: App.config(function($routeProvider, $locationProvider) { $routeProvider .when('/', { templateUrl : '/templates/home.html', controller : 'landing' }) .when
App.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl : '/templates/home.html',
controller : 'landing'
})
.when('/login', {
templateUrl : '/templates/login.html',
controller : 'login'
});
});
我需要的是一个类似于/app/:appname
格式的url,它应该获取名为/template/:appname.html
的模板。我知道可以通过以下方式从控制器访问appname:
$routeParams.appname;
但如何基于该参数呈现模板?templateUrl可以用作返回url的函数
App.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl : '/templates/home.html',
controller : 'landing'
})
.when('/:appname',{
templateUrl: function(params){
return "templates/"+params.appname +".html"
},
controller: 'Ctrl'
});
});
您可以这样做:
App.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/app/:appname', {
templateUrl : '/templates/app-template.html',
controller : 'AppCtrl',
resolve: {
appPath: function ($route) {
return $route.current.params.appname;
}
}
})
});
在AppCtrl中
App.controller('AppCtrl', AppCtrl);
AppCtrl.$inject = [
'$scope'
'appPath'
];
function AppCtrl($scope, appPath) {
$scope.template = appPath + '.html';
}
在app-template.html中,同样使用
希望这有帮助。对不起,我不能接受多个正确答案。上述两项都是有效的:
<div ng-include src="template"></div>