На даний момент у мене вбудована програма AngularJS із вбудованою маршрутизацією. Це працює, і все нормально.
Мій файл app.js виглядає так:
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: '/' });
}]);
У моєму додатку вбудована система управління вмістом, в якій ви можете копіювати та додавати нові файли html в каталог / pages .
Я хотів би все-таки пройти через постачальника маршрутизації, хоча навіть для нових динамічно доданих файлів.
В ідеальному світі шаблон маршрутизації буде таким:
$ routeProvider.when ('/ назва сторінки ', {templateUrl: '/ сторінки / назва сторінки .html', контролер: CMSController});
Тому, якщо моєю новою назвою сторінки було "contact.html", я хотів би, щоб angular підібрав "/ contact" і перенаправив на "/pages/contact.html".
Це взагалі можливо ?! і якщо так, то як ?!
Оновлення
Тепер у мене є це в моїй конфігурації маршрутизації:
$routeProvider.when('/page/:name', { templateUrl: '/pages/home.html', controller: CMSController })
і в моєму CMSController:
function CMSController($scope, $route, $routeParams) {
$route.current.templateUrl = '/pages/' + $routeParams.name + ".html";
alert($route.current.templateUrl);
}
CMSController.$inject = ['$scope', '$route', '$routeParams'];
Це встановлює для поточного templateUrl потрібне значення.
Однак зараз я хотів би змінити ng-view на нове значення templateUrl. Як це досягається?