2013-08-03 60 views
0

我的帖子,我顯示以通常的方式的列表:emberjs itemController打破arrayControllers模板

App.PostsController = Ember.ArrayController.extend() 

{{#each controller}} 
    {{title}} 
    {{body}} 
{{/each}} 

現在我試圖添加到崗位上投票的能力。於是,我就這樣在模板添加到PostController中,並引用它,像這樣:

App.PostsController = Ember.ArrayController.extend(
    itemController: 'post' 
) 

App.PostController = Ember.Controller.extend(
    upvote: -> 
    # some code to upvote 
) 

{{#each controller}} # Note, also tried each post in controller 
    {{title}} 
    {{body}} 
    <a {{action upvote}}>Upvote</a> 
{{/each}} 

這似乎已經徹底打破了現有的模板,但是。 HTML和CSS全部讀入,我可以看到json仍然從服務器返回,但內容不再顯示。似乎添加itemController會破壞與ArrayController的綁定。

我覺得我錯過了一個重要的步驟,但我不確定它是什麼,API指南不提供任何其他方向。

+0

正如我看到你糾正了這個錯字,它仍然不起作用嗎? – intuitivepixel

回答

0

問題是我有PostController定義爲一個常規的控制器,而不是一個ObjectController,所以它沒有代理對底層模型的調用。

App.PostController = Ember.ObjectController.extend(
    upvote: -> 
    # some code to upvote 
) 
0

我想如果你不需要itemController(因爲它沒有定義),你應該刪除它,並且upvote事件應該被捕獲在PostsController

編輯

你的評論讓我看到你有一個錯字,它應該是:

App.PostController = Ember.Controller.extend(
    upvote: -> 
    # some code to upvote 

希望它能幫助。

+0

你是什麼意思,它沒有定義? – DVG

+0

@DVG,編輯我的答案,我猜你有一個錯字,你的itemController應該是'PostController'而不是'PostsController',是否有意義? – intuitivepixel

+0

Gotcha。是的,我在問題中有錯字,儘管它不在我的代碼中。但問題仍然存在。特別好奇的是,在頁面上呈現正確的行數,呈現每個單獨項目的所有div,但其中沒有任何內容。 – DVG