gpt4 book ai didi

ember.js - emberjs Controller 的需求返回未定义且无法访问 controller.content

转载 作者:行者123 更新时间:2023-12-05 00:30:55 25 4
gpt4 key购买 nike

我正在尝试使用 Emberjs 需要 api* 从评论 Controller 访问 Postscontroller。 PostController 由路由支持,而我不希望评论的 Controller 有路由。

在评论 Controller 中,我有 需要:['posts', 'postsShow'] .在评论 Controller 中,当我使用以下命令运行控制台日志时:

    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>

但是,当我尝试访问 Controller 内容时 对于 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');

}

});

非常感谢

最佳答案

那是因为 posts Controller 为空。您正在填写 PostIndexController 中的帖子,不是 PostsController .

检查路线:

EmBlog.PostsRoute  = Ember.Route.extend({
});

EmBlog.PostsIndexRoute = Ember.Route.extend({
model: function(){
return EmBlog.Post.find();
},
setupController: function(controller, model){
controller.set('content', model);
}
});

所以你应该做
needs:  ['postsIndex', 'postsShow']

进而:
this.get('controllers.postsIndex.content')

或修复您的路线:
EmBlog.PostsRoute  = Ember.Route.extend({
model: function() {
return EmBlog.Post.find();
}
});

EmBlog.PostsIndexRoute = Ember.Route.extend({
model: function(){
return this.modelFor('posts');
},
setupController: function(controller, model){
controller.set('content', model);
}
});

Updated fiddle

关于ember.js - emberjs Controller 的需求返回未定义且无法访问 controller.content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15614072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com