2016-04-19 6 views
3

Derzeit Routing-Mechanismus in AngularJS mit dem folgenden Code hinzufügt Ich bin in der Lage:Passing Variablennamen in Winkel Route

App.config(function($routeProvider, $locationProvider) { 
    $routeProvider 
     .when('/', { 
       templateUrl : '/templates/home.html', 
       controller : 'landing' 
      }) 
     .when('/login', { 
       templateUrl : '/templates/login.html', 
       controller : 'login' 
      }); 
}); 

Was ich brauche eine URL im Format wie /app/:appname die Vorlage /template/:appname.html genannt holen soll, ist. Ich weiß, dass der Appname von Controller zugegriffen werden kann mit:

$routeParams.appname; 

Aber wie kann ich Vorlage basierend auf diesem Parameter rendern?

Antwort

1

Sie können dies tun:

in AppCtrl,

App.controller('AppCtrl', AppCtrl); 

AppCtrl.$inject = [ 
    '$scope' 
    'appPath' 
]; 

function AppCtrl($scope, appPath) { 
    $scope.template = appPath + '.html'; 
} 

in app-template.html verwenden ng-include als solche

<div ng-include src="template"></div> 

this helps .

1

templateUrl kann als Funktion verwendet werden, die eine URL zurückgibt.

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' 
     }); 
}); 
+0

Entschuldigung, aber ich kann nicht mehr als eine Antwort als richtig akzeptieren. Beide der oben genannten sind und arbeiten. :) – georoot