Tôi hiện có một ứng dụng AngularJS với định tuyến được tích hợp sẵn. Nó hoạt động và mọi thứ đều ổn.
Tệp app.js của tôi trông giống như sau:
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: '/' });
}]);
Ứng dụng của tôi có CMS được tích hợp sẵn để bạn có thể sao chép và thêm các tệp html mới trong thư mục / pages .
Tôi vẫn muốn truy cập nhà cung cấp định tuyến ngay cả đối với các tệp mới được thêm động.
Trong một thế giới lý tưởng, mô hình định tuyến sẽ là:
$ routeProvider.when ('/ pagename ', {templateUrl: '/ pages / pagename .html', controller: CMSController});
Vì vậy, nếu tên trang mới của tôi là "contact.html", tôi muốn chọn "/ contact" và chuyển hướng đến "/pages/contact.html".
Điều này thậm chí có thể ?! và nếu vậy thì làm thế nào ?!
Cập nhật
Bây giờ tôi có cái này trong cấu hình định tuyến của mình:
$routeProvider.when('/page/:name', { templateUrl: '/pages/home.html', controller: CMSController })
và trong CMSController của tôi:
function CMSController($scope, $route, $routeParams) {
$route.current.templateUrl = '/pages/' + $routeParams.name + ".html";
alert($route.current.templateUrl);
}
CMSController.$inject = ['$scope', '$route', '$routeParams'];
Điều này đặt templateUrl hiện tại thành giá trị phù hợp.
Tuy nhiên, bây giờ tôi muốn thay đổi ng-view bằng giá trị templateUrl mới. Làm thế nào điều này được hoàn thành?