【发布时间】:2013-01-25 18:58:02
【问题描述】:
我有以下两条路径用于编辑和新建:
WZ.ExercisesNewRoute = Em.Route.extend
model: ->
WZ.Exercise.createRecord()
deactivate: ->
@_super.apply this, arguments
@get('currentModel.transaction').rollback()
WZ.ExercisesEditRoute = Em.Route.extend
model: (params) ->
WZ.Exercise.find(params.exercise_id)
serialize: (params, options) ->
exercise_id: params.get('id')
deactivate: ->
@_super.apply this, arguments
tx = @get('currentModel.transaction')
tx.rollback() if tx
我想知道每次停用时正确的代码应该是什么,以便在用户不保存、保存或其他情况下商店处于正确状态。
目前如果我路由到编辑路由,然后直接路由到新路由而不保存,我会收到以下错误:
未捕获的错误:尝试处理事件
willSetPropertyon 在 rootState.deleted.saved 状态下。 用 {reference: [object Object], store: 调用, 姓名:姓名}
【问题讨论】:
-
你的意思是在路线的出口处?您是否正在寻找这样的东西:stackoverflow.com/questions/14797338/…
-
该错误专门发生在直接从编辑路由过渡到新路由然后尝试更改模型时。
-
嘿,这是一个老问题,但你有没有找到规范的方法来做到这一点?
-
我们有,但您可能不喜欢这个答案。我们停止直接处理 ED 模型,而是使用美化哈希,直到我们完全准备好坚持下去,例如用户按下保存。只有这样我们才能将哈希与 ED 模型同步并继续保存模型。这很有效,因为您不需要经常跑来跑去或试图跟踪交易。它有效,但我希望有更好的方法。
-
我在记录的所有新实例上调用
deleteRecord。例如:github.com/collegedesis/collegedesis.com/blob/master/app/assets/…
标签: ember.js coffeescript ember-data