Javascript 角度ui路由器嵌套视图未定义
我定义了一个主视图,在该主视图中,我为我的博客文章定义了一个抽象模板。该博客有两个相关视图:“列表”和“侧边栏”。有两种状态使用这种抽象,一种是“列表”是博客文章列表(其内容被截断),另一种是“列表”是单个博客文章。侧边栏只包含最近博客和流行标签的链接,并且只存在于上述两个视图中。以下是如何定义我的路线:Javascript 角度ui路由器嵌套视图未定义,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我定义了一个主视图,在该主视图中,我为我的博客文章定义了一个抽象模板。该博客有两个相关视图:“列表”和“侧边栏”。有两种状态使用这种抽象,一种是“列表”是博客文章列表(其内容被截断),另一种是“列表”是单个博客文章。侧边栏只包含最近博客和流行标签的链接,并且只存在于上述两个视图中。以下是如何定义我的路线: $stateProvider.state('blog', { abstract: true, templateUrl: "partials/blog.html", co
$stateProvider.state('blog', {
abstract: true,
templateUrl: "partials/blog.html",
controller: "BlogController"
}).state('blog.home', {
url: "/blog",
views: {
list : {
templateUrl: "partials/blog-list.html",
controller: "BlogPostController"
},
sidebar: {
templateUrl: "partials/blog-sidebar.html",
controller: "BlogPostController"
}
},
resolve: {
}
}).state("blog.view", {
url: "/blog/:blogSlug",
views: {
list : {
templateUrl: "partials/blog-post.html",
controller: "BlogPostController"
},
sidebar: {
templateUrl: "partials/blog-sidebar.html",
controller: "BlogPostController"
}
}
})
在我的博客视图中,我有:
<div ui-view="list"></div>
<div ui-view="sidebar"></div>
一切似乎都很正常,除了在我的“列表”视图中,当我从“blog.home”切换到“blog.view”(从查看列表到查看单个博客文章)时,它会闪烁“undefined”。控制台中也会显示错误,因此它看起来好像试图呈现该模板,但没有信息,然后用信息刷新
我读了一些关于resolve的内容,但我不知道如何将信息传递给子视图,因为这些信息还不知道。我还尝试使用建议的ng-斗篷属性,但它不起作用,而且有人告诉我ui路由器不响应ng-斗篷
我处理这个问题的方法有误吗?还是有办法解决这个问题?我现在离UIRouter有点远 一直在我自己的网站上工作写在Angular witch等东西将包含一个博客模块。。。虽然我只是在尝试将核心实现推向开源世界的最初阶段,但也许您可以从中获得一些灵感 它使用:相反,它在许多方面非常相似 无论如何,这里是博客模块的最初核心: 基本的共识是,实际上您可能不需要“侧栏”视图,相反,我有一个“根”视图,当在博客页面上填充“blog.html”模板时,该模板只包含侧栏,并有一个“内容”视图,根据活动状态推送条目列表或单个条目。 如果要在调用控制器之前等待承诺,请使用
resolve
$stateProvider.state("post", {
template: "<h1>{{ post.title }}</h1><div>{{ post.content }}</div>",
url: "/post/:id",
resolve: {
blog: function($stateParams, $http, $timeout) {
var postid = $stateParams.id;
console.log("Fetching blog post: " + postid);
var promise = $http.get('blog.json').then(function (response) {
// simulate long delay using $timeout before returning the blog posts
return $timeout(function() { return response.data[postid]; }, 2000);
});
return promise;
}
},
controller: function($scope, blog) {
$scope.post = blog;
console.log("Controller invoked. Blog post: ", $scope.post);
}
});
$stateProvider.state(“post”{
模板:“{post.title}}{{post.content}}”,
url:“/post/:id”,
决心:{
blog:function($stateparms,$http,$timeout){
var postid=$stateParams.id;
log(“获取博客帖子:+posted”);
var promise=$http.get('blog.json')。然后(函数(响应){
//在返回日志之前,使用$timeout模拟长延迟
return$timeout(函数(){return response.data[postid];},2000);
});
回报承诺;
}
},
控制器:函数($scope,blog){
$scope.post=博客;
log(“Controller-invoked.Blog-post:,$scope.post”);
}
});
啊,是的,这是个好主意。。。这并不能解决我的问题,但这使我的代码更好:)谢谢,这很有效!我以前试过各种各样的解决办法,但都没能奏效。