0

我有一个以通常方式显示的帖子列表:

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 指南没有提供任何额外的方向。

4

2 回答 2

0

我猜如果你不需要itemController(因为它没有定义)你应该删除它并且upvote事件应该被捕获在PostsController.

编辑

您的评论让我看到您有一个错字,应该是:

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

希望能帮助到你。

于 2013-08-03T21:55:35.200 回答
0

问题是我将 PostController 定义为常规控制器而不是 ObjectController,因此它没有代理对底层模型的调用。

App.PostController = Ember.ObjectController.extend(
  upvote: ->
    # some code to upvote
)
于 2013-08-04T16:15:59.647 回答