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