私は現在、ルーティングが組み込まれた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( '/ ページ名 '、{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値で変更したいと思います。これはどのように達成されますか?