ขณะนี้ฉันมีแอปพลิเคชัน 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: '/' });
}]);
แอปของฉันมี CMS ในตัวซึ่งคุณสามารถคัดลอกและเพิ่มไฟล์ html ใหม่ภายในไดเร็กทอรี/ pages
ฉันต้องการดำเนินการผ่านผู้ให้บริการเส้นทางแม้ว่าจะมีไฟล์ใหม่ที่เพิ่มแบบไดนามิกก็ตาม
ในโลกแห่งอุดมคติรูปแบบการกำหนดเส้นทางจะเป็น:
$ 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 ปัจจุบันเป็นค่าที่ถูกต้อง
อย่างไรก็ตามตอนนี้ฉันต้องการเปลี่ยนng-viewด้วยค่า templateUrl ใหม่ สิ่งนี้สำเร็จได้อย่างไร?