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を使用しています)
いくつかの質問を聞きたいんです:
これは commit() を処理するための正しい/最善のアプローチですか?
isValid
後で呼び出されるように、両方のオブザーバーを削除する必要があることがわかりましたisError
-これは予想されることですか?エラーコードに基づいてルーティングを決定できるようにしたいので、サーバーの応答にアクセスするにはどうすればよいですか?
ルーターを参照できる唯一の方法はスルーです
App.Router.router
-よりクリーンな方法はありますか?エラーが発生した場合、今後再コミットされないようにストアからレコードを削除するために何かする必要がありますか?