在 angular 路由中传递变量名
Passing variable name in angular route
目前我可以使用以下代码在 AngularJs 中添加路由机制:
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 可以用作 returns a 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 中,直接使用 ng-include
<div ng-include src="template"></div>
希望对您有所帮助。
目前我可以使用以下代码在 AngularJs 中添加路由机制:
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
的模板。我知道可以使用 :
$routeParams.appname;
但是我如何根据该参数呈现模板?
templateUrl 可以用作 returns a 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 中,直接使用 ng-include
<div ng-include src="template"></div>
希望对您有所帮助。