0

我正在使用 Ember.js 和 Ember-Data。用户可以创建和更新资源,例如Organization模型。在大多数情况下,系统按预期工作。一个例外是,如果用户部分填写了表单,然后没有点击提交就离开了页面。部分创建的资源将保留在客户端。(它从不提交给服务器,因此从不存在于数据库中。如果用户重新加载页面,这些部分创建的资源就会消失。)

我的路线相当标准:

Whistlr.OrganizationsNewRoute = Ember.Route.extend
  model: ->
    @store.createRecord('organization')
  setupController: (controller, model) ->
    controller.set('content', model)

Whistlr.OrganizationEditRoute = Ember.Route.extend
  model: (params) ->
    @store.find('organization', params.organization_id)
  setupController: (controller, model) ->
    controller.set('content', @modelFor('organization'))

也许我描述的行为也是标准的?如果是这样,有没有办法阻止它?

4

1 回答 1

2

您可以使用rollbackfrom 方法DS.Model还原本地更改。

一个使用它的好地方是你的路线的停用方法,你有你的表格。所以当用户退出路由时,deactivate会执行,如果有脏数据,会被清除。

可能您需要在 and 中使用相同的逻辑OrganizationsNewRouteOrganizationEditRoute因此您可以提取到 mixin:

Whistlr.CleanupRecordDataMixin = Ember.Mixin.create({
    deactivate: function() {
        this.get('controller.content').rollback();
    }
});

Whistlr.OrganizationsNewRoute = Ember.Route.extend(Whistlr.CleanupRecordDataMixin, {
   // other methods
});

Whistlr.OrganizationEditRoute = Ember.Route.extend(Whistlr.CleanupRecordDataMixin, {
   // other methods
});
于 2013-10-11T01:44:26.370 回答