私は自分のウェブサイトに簡単なブログ セクションを作成しているので、投稿テンプレートに動的にリンクする、posts という名前の名前空間が必要です。これらの投稿にはそれぞれ独自のテンプレート (つまり posts/some_post.html ) があります。これは、json データを使用して一般的なテンプレートを設定するにはあまりにも異なるためです。
本番環境で投稿できるように、各投稿へのリンクを作成できる名前空間が必要です: mysite/posts/my_new_post. ただし、投稿を .state URL の先頭に追加すると、モジュールのインスタンス化に失敗するというエラーが発生します。
これは、作業コードのスニペットです。
.config(["$urlRouterProvider", "$stateProvider","$locationProvider", function ($urlRouterProvider, $stateProvider,$locationProvider){
$urlRouterProvider.otherwise('/');
$locationProvider.html5Mode(true);
$stateProvider
.state('posts', {
url: '/:postID',
templateUrl : function($stateParams){
return 'templates/posts/' + $stateParams.postID + '.html';
},
});
}]);
このコードは機能し、生成された URI にリンクできます。このリンクをクリックすると:
li><a ui-sref="posts({postID: 'blog2'})">blog 2</a></li>
URI は website/blog2 になり、website/home から URI にリンクできます
ただし、名前空間を追加しようとすると失敗します。
.state('posts', {
url: '/posts/:postID', // note i added posts before the id
templateUrl : function($stateParams){
return 'templates/posts/' + $stateParams.postID + '.html';
},
リンクは初めて動作し、正しいページに連れて行ってください。ただし、URIパターンmySite/posts/blog1を入力すると、:[$ injector:modulerr]エラー、およびこの奇妙なsyntaxerror:予期しないトークン<
どういうわけか角度をロードしていません。誰もアイデアを持っていませんか?