1

我有一个 ember 模型,它看起来像这样(在咖啡脚本中)

App.User = DS.Model.extend
  name: DS.attr('string')
  age:  DS.attr('number)

  becameError: ->
    #F it, i give up, reload
    @reload()

只有当我打电话时,this.reload()我才能得到

Error: Attempted to handle event `reloadRecord` on <App.User:ember255:1> while in state rootState.error.

从服务器重新加载模型的正确方法是什么?

4

1 回答 1

4

如果您希望您的模型在进入错误状态时从服务器重新加载,您的模型定义应该如下所示。

App.User = DS.Model.extend
  name: DS.attr('string')
  age:  DS.attr('number)

  becameError: ->
    #F it, i give up, reload
    @get('stateManager').transitionTo('loaded.saved')
    @reload()

关键线是

@get('stateManager')transtionTo('loaded.saved')

让模型脱离错误状态似乎有点混乱。一旦 ember-data 进一步发展,可能会有更漂亮的方法来执行此操作,因此请查看文档。

我应该提到,如果您想尝试重新提交您的更改,您可以改用其中之一

@get('stateManager').transitionTo('loaded.created.uncommitted') # New Models
@get('stateManager').transitionTo('loaded.updated')             # Updated models
于 2013-05-13T22:56:38.813 回答