현재 라우팅이 내장 된 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: '/' });
}]);
내 앱에는 / pages 디렉토리 내에서 새 html 파일을 복사하고 추가 할 수있는 CMS가 내장되어 있습니다 .
동적으로 추가 된 새 파일에도 여전히 라우팅 공급자를 사용하고 싶습니다.
이상적인 세계에서 라우팅 패턴은 다음과 같습니다.
$ routeProvider.when ( '/ pagename ', {templateUrl : '/ pages / pagename .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이 올바른 값으로 설정됩니다.
그러나 이제 새 templateUrl 값으로 ng-view 를 변경하고 싶습니다 . 이것은 어떻게 이루어 집니까?