web-dev-qa-db-fra.com

AngularJS - utiliser les variables "quand" routeProvider pour construire le nom templateUrl?

Voici donc ce que j'essaie d'accomplir:

'use strict';

var app = angular.module('myModule', ['ngRoute']);

app.config(function($routeProvider) {
  $routeProvider
    .when('/', {
      redirectTo: '/pages'
    })
    .when('/pages/:pageName', {
      templateUrl: 'views/pages/'+pageName+'html',
      controller: 'MainController'
    });
});

Fondamentalement, je veux utiliser l'URI pour déterminer quel modèle est utilisé. Actuellement, je reçois une erreur indiquant que pageName n'est pas défini, ce que je comprends. Quelle serait une autre façon de procéder? Merci!

21
Georgi Angelov

templateUrl peut être une fonction acceptant l'objet des paramètres de route:

.when('/pages/:pageName', {
    templateUrl: function(params) {
        return 'views/pages/' + params.pageName + '.html';
    },
    controller: 'MainController'
});
38
dfsq

templateUrl peut être utilisé comme fonction avec retour de l'URL générée. Nous pouvons manipuler l'URL avec un argument passant qui prend routeParams.

Voir l'exemple.

.when('/:screenName/list',{
    templateUrl: function(params){
         return params.screenName +'/listUI'
    }
})

J'espère que cette aide.

5
Ravi K.