1

我正在尝试使用https://github.com/emberjs/data作为参考来使用 ember-data。

具体来说,我正在尝试使用数组控制器来显示我的数据库中的所有“Person”对象。我还想允许用户创建一个新的“人”。

我有以下有效的代码:

App.peopleController  = Em.ArrayController.create
  content: App.store.findAll(App.Person)

  newPerson: (name) ->
    App.store.create App.Person,
      name: name
    @set('content', App.store.findAll(App.Annotation))

但是,每次创建新人时重置内容属性似乎效率低下。如果我删除最后一行并将代码更改为以下内容:

App.peopleController  = Em.ArrayController.create
  content: App.store.findAll(App.Person)

  newPerson: (name) ->
    App.store.create App.Person,
      name: name

每次调用 newPerson 时仍会创建一个新视图,但会复制相同的对象。基本上发生的事情是所有新模板每次都使用创建的第一个对象而不是一个新对象。我认为这与以下错误有关:https ://github.com/emberjs/data/issues/11 。

作为参考,我的模板逻辑如下:

{{#each App.peopleController}}
  {{#view App.PersonView contentBinding="this"}}
    {{#with content}}
      Client id is {{clientId}}
    {{/with}}
  {{/view}}
{{/each}}

当我使用我的代码的第二个版本时——带有行的那个@set('content', App.store.findAll(App.Annotation))——clientId 对于每个 Person 对象都是重复的。在第一个版本中,客户端 ID 是正确的。

任何人都可以在这里阐明一下吗?我这样做正确吗?我的直觉告诉我这是一个错误,但我不确定。

4

2 回答 2

4

我认为这是一个错误。我发布了一个相关的问题来说明这个问题。

于 2011-12-29T07:19:17.923 回答
0

尝试改用#collection视图。

请参阅 ToDo 示例的代码。另请参阅http://guides.sproutcore20.com/using_handlebars.html第 5 节以获取一些文档。

希望这可以帮助。

于 2011-12-29T21:28:37.010 回答