Forms 余烬-提交后清除表单

Forms 余烬-提交后清除表单,forms,ember.js,ember-data,Forms,Ember.js,Ember Data,我使用余烬数据创建了非常简单的余烬应用程序。有一个表单,用户在其中创建实体并提交。它位于BandsNewView(由余烬自动创建),由BandsNewController控制: App.BandsNewController = Ember.Controller.extend({ cancel: function() { this.transitionTo('bands'); }, save: function() { App.Band.c

我使用余烬数据创建了非常简单的余烬应用程序。有一个表单,用户在其中创建实体并提交。它位于
BandsNewView
(由余烬自动创建),由
BandsNewController
控制:

App.BandsNewController = Ember.Controller.extend({
    cancel: function() {
        this.transitionTo('bands');
    },

    save: function() {
        App.Band.createRecord(this);
        this.get('store').commit();

        this.set('name');
        this.set('description');
        this.transitionTo('bands');
    }
});

我想知道在保存新的Band实体后,是否有更简单的方法来“清理”(即清空)表单?我可以说类似于
this.set()
,它会清空所有字段吗?或者我的方法根本上是错误的,我应该完全不同吗?

我一直喜欢的模式是在路线本身的入口和出口创建和销毁对象

App.BandsNewRoute = Ember.Route.extend({
  model: function(params) {
    return App.Band.createRecord({});
  },
  save: function() {
    this.get('currentModel.store').commit();
    return this.transitionTo('bands');
  },
  exit: function() {
    var model = this.get('currentModel');
    if (model.get("isNew") && !model.get("isSaving")) {
      return model.get('transaction').rollback();
    }
  }
});
如您所见,它使退出函数稍微复杂一点,但对于每个对象创建路径,它都是完全相同的,因此您可以将其考虑在内。现在,模板可以直接绑定到模型的属性,模型将在保存时保存,或在退出时回滚(这将清除表单)

如果您计划可能更改其他数据模型而不保存它们,或者有未保存的模型,安全地清除模型的一种方法是将其放入自己的事务中。不过,我只倾向于将其用于那些不是我当前流程的主要焦点的对象

App.BandsNewRoute = Ember.Route.extend({
  model: function(params) {
    var transaction = this.get('store').transaction();
    return transaction.createRecord(App.Band, {})
  }
});

其他一切都可以保持不变。

这也可以回滚可能出现的其他更改。您可能需要将记录放在单独的事务中。。请参阅我的编辑..Shimon,您执行事务的方式有点冗长,使用较短的方式进行更新。@AndreMalan使用“停用”并删除事务代码是值得更新的。我认为发表评论比为你完全重写要好。