3

我正在将 EmberJS 与 Ember Data(修订版 11)一起使用,并在事务成功完成后尝试转换到另一条路线。问题是这个页面允许编辑模型以及在该模型上的 hasMany 集合中添加和删除项目。

我目前拥有的如下:

myModel.one "didUpdate", this, ->
    @transitionTo "anotherRoute", myModel

myModel.transaction.commit()

仅当 myModel 已更改而不是其中任何一个 hasMany 子项也已更改时,它才会转换。

我真的在寻找一种方法:

  • 当 myModel 的所有 hasMany 子项已成功保存时运行 didUpdate 事件
  • 当所有模型都成功持久化后,挂钩到事务的回调。
4

1 回答 1

3

我也遇到过这个问题。我目前的解决方案是观察交易状态:

observer = (target, path) =>
  if target.get(path) is 'saved'
    target.removeObserver path, null, observer
    @doSomething()

@get('content').addObserver 'stateManager.currentState.name', null, observer
@get('content.transaction').commit()

didUpdate 不起作用的事实可能是一个错误。如果我直接在模型上定义回调,它会被调用。

于 2013-04-01T20:36:54.203 回答