我在調用commit()之後做了些什麼以及要做什麼。我想確定如何路由用戶,具體取決於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因此使用jQuery的使用 'Ember.TextField')我有幾個問題:
這是處理commit()的正確/最好的方法嗎?
我發現我必須刪除兩個觀察者,因爲
isValid
在isError
之後被調用 - 這是可以預料的嗎?如何訪問服務器響應,因爲我希望能夠根據錯誤代碼進行路由決策?
我可以參考路由器的唯一方法是通過
App.Router.router
- 有更清晰的方法嗎?如果出現錯誤,我是否需要做任何事情來從商店中刪除記錄,以便將來不會重新提交?