在我调用 commit() 之后,我正在为做什么而苦苦挣扎。我想根据commit()
成功或服务器是否返回错误来确定如何路由用户。
我在某处读到,如果服务器上出现错误,那么它可以返回 >400 的状态代码和如下错误:
{ 'errors' : [ { 'errorCode' : [ 'duplicate-user' ] } ] }
在客户端,我有以下内容:
App.UsersController = Ember.ObjectController.extend({
createUser : function () {
'use strict';
var user = App.User.createRecord({
firstName : $("#firstName").val(),
lastName : $("#lastName").val(),
primaryEmailAddress : $("#primaryEmailAddress").val(),
password : $("#password").val()
}),
commitObserver = Ember.Object.extend({
removeObservers : function (sender) {
sender.removeObserver('isError', this, 'error');
sender.removeObserver('isValid', this, 'success');
},
error : function (sender, key, value) {
this.removeObservers(sender);
App.Router.router.transitionTo('duplicateuser');
},
success : function (sender, key, value) {
this.removeObservers(sender);
App.Router.router.transitionTo('usercreated');
}
});
user.get('transaction').commit();
user.addObserver('isError', commitObserver.create(), 'error');
user.addObserver('isValid', commitObserver.create(), 'success');
}
});
(注意:我没有在我的 HTML 中使用“Ember.TextField”,因此使用了 jQuery)
我有几个问题:
这是处理提交()的正确/最佳方法吗?
我发现我必须删除两个观察者
isValid
之后调用isError
- 这是可以预期的吗?我如何/可以访问服务器响应,因为我希望能够根据错误代码做出路由决定?
我可以引用路由器的唯一方法是通过
App.Router.router
- 有没有更清洁的方法?如果出现错误,我是否需要做任何事情来从商店中删除记录,以便将来不会重新提交?