Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在角度路由中传递变量名_Angularjs_Angular Routing_Ngroute - Fatal编程技术网

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

目前,我可以使用以下代码在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可以用作返回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>