4
我想使用Emberjs 需要api *从评论控制器访问Postscontroller。 PostController由路由支持,而我不希望评论的控制器拥有路由。emberjs控制器的需求返回undefined,无法访问controller.content
在评论控制器中,我有需求:['posts','postsShow']。从评论控制器,当我运行控制台日志使用下面的命令,,:
console.log(this.get('controllers.postsShow'));
console.log(this.get('controllers.posts'));
在控制台中我看到:
<EmBlog.PostsShowController:ember396> { target=<EmBlog.Router:ember316>, namespace=EmBlog, store=<EmBlog.Store:ember336>
<EmBlog.PostsController:ember304> { target=<EmBlog.Router:ember316>, namespace=EmBlog, store=<EmBlog.Store:ember336>
然而,当我试图访问控制器内容对于PostsShowController或PostsController,它始终返回后未定义。这是我已经试过各种方法仍然有后未定义:
var post = this.get('controllers.posts').get('content');
or
var post = this.get('controllers.posts.content');
此外,我试图从这样的内容获得“评论”:
var post = this.get('controllers.posts')
var comment = post.get('comments');
or
comment = post.comments;
我还是得到了错误:
TypeError: post is undefined comment = post.comments;
TypeError: post is undefined var comment = post.get('comments');
也这意味着:
var post = this.get('controllers.posts.model').get('store.transaction');
also returns post is undefined.
这是jsfiddle和代码的相关部分粘贴下面:
EmBlog.PostsNewController = Ember.ObjectController.extend({
content: null
});
EmBlog.PostsShowController =
Ember.ObjectController.extend({
content: null
});
EmBlog.CommentNewController = Em.ObjectController.extend({
needs: ['posts', 'postsShow'],
isAddingNew: false,
addComment: function(body){
console.log(this.get('controllers.postsShow'));
console.log(this.get('controllers.posts'));
var post = this.get('controllers.posts.content');
store = post.get('store.transaction');
}
});
非常感谢
非常感谢您的帮助。当我将一个console.log放在变量持有存储上时,它返回** TypeError:post.get不是一个函数store = console.log(post.get('store.transaction')); **。 ** [从你的小提琴更新显示](http://jsfiddle.net/mzseQ/2/)**。你有一个想法,为什么这是。这可能是为什么**单击addComment **不会按照这个较老的** [jsfiddle具有类似代码](http://jsfiddle.net/CD9ck/4/)**返回评论表单当我们点击** addComment **时,评论表单除外**在提交时不会创建评论**。谢谢。 – brg 2013-03-25 13:11:37
许多问题与: - 你不能做variable = console.log(某事),你必须做variable = something。 - 如果你想要一篇文章,你需要'postsShow.content'而不是'postsIndex.content' - 'post.get('store.transaction')'只是一个函数。您需要'transaction = this.get('store')。transaction()'或'post.get('transaction')' – 2013-03-25 13:19:56
非常感谢您的耐心和您提供的有用洞察。我根据上面的建议更正了** [jsfiddle](http://jsfiddle.net/mzseQ/3/)**。所有的错误都消失了,**只剩下一个问题**。当我点击** addComment **时,它不会显示评论表单,并在控制台中看到** undefined **。有什么建议么。谢谢 – brg 2013-03-25 13:37:40