目前我可以使用以下代码在AngularJs中添加路由机制:
App.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl : '/templates/home.html',
controller : 'landing'
})
.when('/login', {
templateUrl : '/templates/login.html',
controller : 'login'
});
});
我需要的是一个类似/app/:appname
格式的网址,它应该获取名为/template/:appname.html
的模板。我知道可以使用以下命令从控制器访问appname:
$routeParams.appname;
但是如何基于该参数渲染模板?
答案 0 :(得分:1)
templateUrl 可以用作返回网址的函数。
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'
});
});
答案 1 :(得分:1)
你可以这样做:
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中,使用ng-include作为
<div ng-include src="template"></div>
希望这有帮助。