尝试在状态root.loaded.updated.invalid中处理<testapp @ model:testroute :: ember1700:1>上的事件`得动`

时间:2016-01-06 10:32:57

标签: ember.js ember-cli

我有一个名为' testroute '的路径(localhost:8080 / testroute)。

它有一条记录。我试着编辑它(localhost:8080 / testroute / edit / 1)。我给了新的价值并提交了。这些值未能通过服务器端验证,并且状态代码 422 引发 错误消息

然后我决定不再编辑了。从这里开始,我又去了一条名为' nextroute '的路线(localhost:8080 / nextroute)。

现在,我再次尝试去'testroute'(localhost:8080 / testroute)。它没有进入控制台我得到错误“在状态root.loaded.updated.invalid中尝试处理事件pushedData。”

我以前使用编辑过的值进行ajax调用是

this.get('model').save().then(function(response){
      console.log('response',response);
      //code
},function(error){
      console.log('error',error);
      //code
});

当我刷新页面时,我可以去'testroute'(localhost:8080 / testroute)。但是在这个错误发生后我无法打开。

记录在ember-date中处于修改状态(我在ember检查员中看到过)。当我刷新它时它只会进入清洁状态。

1 个答案:

答案 0 :(得分:0)

我所知道的是,您的服务器无法处理您的帖子/补丁请求并返回错误。因此,您的模型处于无效状态。你应该做的是,一旦错误被退回,你的模型rollback

var model = this.get('model')
model.save().then(function(response){
      console.log('response',response);
      //code
},function(error){
      console.log('error',error);
      model.rollbackAttributes();
});

修改

如果您需要在离开页面之前将模型保持在其状态,则应使用路线的willTransition事件,例如:

Ember.Route.extend({
  actions: {
    willTransition: function(transition) {
      if (this.controller.get('model.errors')) {
          Ember.Logger.debug('model will be reverted');
          this.controller.get('model').rollbackAttributes()
      }
    }
  }
});

有关详细信息,请参阅here