Saat ini saya memiliki aplikasi AngularJS dengan perutean bawaan. Ia bekerja dan semuanya baik-baik saja.
File app.js saya terlihat seperti ini:
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: '/' });
}]);
Aplikasi saya memiliki CMS bawaan tempat Anda dapat menyalin dan menambahkan file html baru di dalam direktori / pages .
Saya ingin tetap melalui penyedia perutean meskipun untuk file baru yang ditambahkan secara dinamis.
Dalam dunia yang ideal pola peruteannya adalah:
$ routeProvider.when ('/ pagename ', {templateUrl: '/ pages / pagename .html', controller: CMSController});
Jadi jika nama halaman baru saya adalah "contact.html", saya ingin angular untuk mengambil "/ contact" dan dialihkan ke "/pages/contact.html".
Apakah ini mungkin ?! dan jika demikian bagaimana ?!
Memperbarui
Saya sekarang memiliki ini di konfigurasi perutean saya:
$routeProvider.when('/page/:name', { templateUrl: '/pages/home.html', controller: CMSController })
dan di CMSController saya:
function CMSController($scope, $route, $routeParams) {
$route.current.templateUrl = '/pages/' + $routeParams.name + ".html";
alert($route.current.templateUrl);
}
CMSController.$inject = ['$scope', '$route', '$routeParams'];
Ini menyetel templateUrl saat ini ke nilai yang benar.
Namun sekarang saya ingin mengubah ng-view dengan nilai templateUrl baru. Bagaimana ini tercapai?