emberjs itemController打破了arrayControllers模板

时间:2013-08-03 21:15:26

标签: arrays ember.js controller

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

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

2 个答案:

答案 0 :(得分:0)

我想如果你不需要itemController(因为它没有定义)你应该删除它,upvote事件应该被PostsController捕获。

修改

你的评论让我发现你有一个错字,它应该是:

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

希望它有所帮助。

答案 1 :(得分:0)

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

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