Al momento ho un'applicazione AngularJS con routing integrato. Funziona e va tutto bene.
Il mio file app.js ha questo aspetto:
angular.module('myapp', ['myapp.filters', 'myapp.services', 'myapp.directives']).
config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/', { templateUrl: '/pages/home.html', controller: HomeController });
$routeProvider.when('/about', { templateUrl: '/pages/about.html', controller: AboutController });
$routeProvider.when('/privacy', { templateUrl: '/pages/privacy.html', controller: AboutController });
$routeProvider.when('/terms', { templateUrl: '/pages/terms.html', controller: AboutController });
$routeProvider.otherwise({ redirectTo: '/' });
}]);
La mia app ha un CMS integrato in cui puoi copiare e aggiungere nuovi file html nella directory / pages .
Vorrei comunque passare attraverso il provider di routing anche se anche per i nuovi file aggiunti dinamicamente.
In un mondo ideale il modello di instradamento sarebbe:
$ routeProvider.when ('/ pagename ', {templateUrl: '/ pages / pagename .html', controller: CMSController});
Quindi, se il nome della mia nuova pagina fosse "contact.html", vorrei che angular prenda "/ contact" e reindirizzi a "/pages/contact.html".
È anche possibile ?! e se sì come ?!
Aggiornare
Ora ho questo nella mia configurazione di routing:
$routeProvider.when('/page/:name', { templateUrl: '/pages/home.html', controller: CMSController })
e nel mio CMSController:
function CMSController($scope, $route, $routeParams) {
$route.current.templateUrl = '/pages/' + $routeParams.name + ".html";
alert($route.current.templateUrl);
}
CMSController.$inject = ['$scope', '$route', '$routeParams'];
Questo imposta l'attuale templateUrl sul valore corretto.
Tuttavia , ora vorrei modificare ng-view con il nuovo valore templateUrl. Come si ottiene ciò?