我正在我的网站上创建一个简单的博客部分,所以我想要一个名为帖子的命名空间,它可以动态链接到帖子模板。这些帖子都有自己的模板(即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] 错误,并且这个奇怪:未捕获语法错误:意外的令牌 <
不知何故,它没有加载角度,有人有什么想法吗?