コメントコントローラーからPostscontrollerにアクセスするには、Emberjs needapi*を使用しようとしています。コメントのコントローラーにルートを設定したくないのですが、PostControllerはルートに支えられています。
コメントコントローラには、['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のコントローラーコンテンツにアクセスしようとすると、常にpostundefinedが返されます。これらは私が試したさまざまなアプローチですが、まだ未定義の投稿があります:
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');
}
});
どうもありがとう