Ich habe derzeit eine AngularJS-Anwendung mit integriertem Routing. Sie funktioniert und alles ist in Ordnung.
Meine app.js-Datei sieht folgendermaßen aus:
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: '/' });
}]);
In meiner App ist ein CMS integriert, mit dem Sie neue HTML-Dateien im Verzeichnis / pages kopieren und hinzufügen können .
Ich möchte trotzdem den Routing-Anbieter durchgehen, auch für die neuen dynamisch hinzugefügten Dateien.
In einer idealen Welt wäre das Routing-Muster:
$ routeProvider.when ('/ pagename ', {templateUrl: '/ pages / pagename .html', controller: CMSController});
Wenn mein neuer Seitenname "contact.html" wäre, möchte ich, dass Angular "/ contact" aufnimmt und zu "/pages/contact.html" umleitet.
Ist das überhaupt möglich?! und wenn ja wie?!
Aktualisieren
Ich habe dies jetzt in meiner Routing-Konfiguration:
$routeProvider.when('/page/:name', { templateUrl: '/pages/home.html', controller: CMSController })
und in meinem CMSController:
function CMSController($scope, $route, $routeParams) {
$route.current.templateUrl = '/pages/' + $routeParams.name + ".html";
alert($route.current.templateUrl);
}
CMSController.$inject = ['$scope', '$route', '$routeParams'];
Dadurch wird die aktuelle templateUrl auf den richtigen Wert gesetzt.
Aber ich würde jetzt wie das ändern ng-Ansicht mit dem neuen templateUrl Wert. Wie wird das erreicht?