1

我正在构建一个带有用户注册的 ember.js Web 应用程序。如果注册失败(例如无效的电子邮件),API 会返回错误。问题是这会使模型进入错误状态,如果用户尝试再次尝试注册,Ember.js 引发错误Uncaught Error: Attempted to handle event 'willSetProperty' on <App.User:ember451:null> while in state rootState.error.,然后似乎变得无响应。

出错后是否必须手动重置状态?

becameInvalid: function() {
    // reset the state after an error
    var parentState = this.get('stateManager').get('currentState').parentState.dirtyType;
    if (parentState === "updated") {
      this.get('stateManager').transitionTo('loaded.updated');
    } else {
      this.get('stateManager').transitionTo('loaded.created.uncommitted');
    }

  }

这似乎有点奇怪。我是否设置不正确?有没有其他方法或者我应该在错误后重置?

4

2 回答 2

1

出错后是否必须手动重置状态?

是的。

这似乎有点奇怪。

同意。可以肯定的是,它会在未来版本的 ember-data 中得到改进。

我是否设置不正确?

不,你做对了

有没有其他方法或者我应该在错误后重置?

没有其他方式AFAIK。

请参阅此帖子:Ember:transaction.commit 在 becomeInvalid 事件后不触发

于 2013-08-27T05:10:35.093 回答
0

您必须手动重置状态。Ember 本身不处理模型管理。Ember-Data 和 Ember-Model(与 Ember 不同)具有回滚/还原“脏”模型的能力。

于 2013-08-27T04:33:25.890 回答